Lines Matching refs:dasher

121 u32 gf_dasher_next_update_time(GF_DASHSegmenter *dasher, u64 *ms_in_session)  in gf_dasher_next_update_time()  argument
124 if (dasher->next_gen_ntp_ms) { in gf_dasher_next_update_time()
125 diff = (s64) dasher->next_gen_ntp_ms; in gf_dasher_next_update_time()
128 if (ms_in_session) *ms_in_session = dasher->mpd_time_ms; in gf_dasher_next_update_time()
136 GF_DASHSegmenter *dasher; in gf_dasher_new() local
137 GF_SAFEALLOC(dasher, GF_DASHSegmenter); in gf_dasher_new()
138 if (!dasher) return NULL; in gf_dasher_new()
140 dasher->mpd_name = gf_strdup(mpdName); in gf_dasher_new()
142 dasher->dash_scale = dash_timescale ? dash_timescale : 1000; in gf_dasher_new()
143 if (tmp_dir) dasher->tmpdir = gf_strdup(tmp_dir); in gf_dasher_new()
144 dasher->profile = dash_profile; in gf_dasher_new()
145 dasher->dash_state = dasher_context_file; in gf_dasher_new()
146 dasher->inputs = gf_list_new(); in gf_dasher_new()
147 return dasher; in gf_dasher_new()
151 void gf_dasher_set_start_date(GF_DASHSegmenter *dasher, const char *dash_utc_start_date) in gf_dasher_set_start_date() argument
153 if (!dasher) return; in gf_dasher_set_start_date()
154 if (dasher->utc_start_date) gf_free(dasher->utc_start_date); in gf_dasher_set_start_date()
155 dasher->utc_start_date = dash_utc_start_date ? gf_strdup(dash_utc_start_date) : NULL; in gf_dasher_set_start_date()
159 void gf_dasher_clean_inputs(GF_DASHSegmenter *dasher) in gf_dasher_clean_inputs() argument
161 gf_list_reset(dasher->inputs); in gf_dasher_clean_inputs()
162 if (dasher->fsess) { in gf_dasher_clean_inputs()
163 gf_fs_del(dasher->fsess); in gf_dasher_clean_inputs()
164 dasher->fsess = NULL; in gf_dasher_clean_inputs()
169 void gf_dasher_del(GF_DASHSegmenter *dasher) in gf_dasher_del() argument
171 if (dasher->seg_rad_name) gf_free(dasher->seg_rad_name); in gf_dasher_del()
172 gf_dasher_clean_inputs(dasher); in gf_dasher_del()
173 gf_free(dasher->tmpdir); in gf_dasher_del()
174 gf_free(dasher->mpd_name); in gf_dasher_del()
175 if (dasher->title) gf_free(dasher->title); in gf_dasher_del()
176 if (dasher->moreInfoURL) gf_free(dasher->moreInfoURL); in gf_dasher_del()
177 if (dasher->sourceInfo) gf_free(dasher->sourceInfo); in gf_dasher_del()
178 if (dasher->copyright) gf_free(dasher->copyright); in gf_dasher_del()
179 if (dasher->lang) gf_free(dasher->lang); in gf_dasher_del()
180 if (dasher->locations) gf_free(dasher->locations); in gf_dasher_del()
181 if (dasher->base_urls) gf_free(dasher->base_urls); in gf_dasher_del()
182 if (dasher->utc_start_date) gf_free(dasher->utc_start_date); in gf_dasher_del()
183 gf_list_del(dasher->inputs); in gf_dasher_del()
184 gf_free(dasher); in gf_dasher_del()
188 GF_Err gf_dasher_set_info(GF_DASHSegmenter *dasher, const char *title, const char *copyright, const… in gf_dasher_set_info() argument
190 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_info()
193 if (dasher->_field) gf_free(dasher->_field);\ in gf_dasher_set_info()
194 dasher->_field = _field ? gf_strdup(_field) : NULL;\ in gf_dasher_set_info()
205 GF_Err gf_dasher_set_location(GF_DASHSegmenter *dasher, const char *location) in gf_dasher_set_location() argument
207 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_location()
210 return gf_dynstrcat(&dasher->locations, location, ","); in gf_dasher_set_location()
214 GF_Err gf_dasher_add_base_url(GF_DASHSegmenter *dasher, const char *base_url) in gf_dasher_add_base_url() argument
216 if (!dasher) return GF_BAD_PARAM; in gf_dasher_add_base_url()
219 return gf_dynstrcat(&dasher->base_urls, base_url, ","); in gf_dasher_add_base_url()
222 static void dasher_format_seg_name(GF_DASHSegmenter *dasher, const char *inName) in dasher_format_seg_name() argument
224 if (dasher->seg_rad_name) gf_free(dasher->seg_rad_name); in dasher_format_seg_name()
225 dasher->seg_rad_name = NULL; in dasher_format_seg_name()
226 if (inName) dasher->seg_rad_name = gf_strdup(inName); in dasher_format_seg_name()
230 GF_Err gf_dasher_enable_url_template(GF_DASHSegmenter *dasher, Bool enable, const char *default_tem… in gf_dasher_enable_url_template() argument
232 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_url_template()
233 dasher->use_url_template = enable; in gf_dasher_enable_url_template()
234 dasher->seg_ext = default_extension; in gf_dasher_enable_url_template()
235 dasher->seg_init_ext = default_init_extension; in gf_dasher_enable_url_template()
236 dasher_format_seg_name(dasher, default_template); in gf_dasher_enable_url_template()
241 GF_Err gf_dasher_enable_segment_timeline(GF_DASHSegmenter *dasher, Bool enable) in gf_dasher_enable_segment_timeline() argument
243 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_segment_timeline()
244 dasher->use_segment_timeline = enable; in gf_dasher_enable_segment_timeline()
249 GF_Err gf_dasher_enable_single_segment(GF_DASHSegmenter *dasher, Bool enable) in gf_dasher_enable_single_segment() argument
251 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_single_segment()
252 dasher->single_segment = enable; in gf_dasher_enable_single_segment()
257 GF_Err gf_dasher_enable_single_file(GF_DASHSegmenter *dasher, Bool enable) in gf_dasher_enable_single_file() argument
259 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_single_file()
260 dasher->single_file = enable; in gf_dasher_enable_single_file()
265 GF_Err gf_dasher_set_switch_mode(GF_DASHSegmenter *dasher, GF_DashSwitchingMode bitstream_switching) in gf_dasher_set_switch_mode() argument
267 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_switch_mode()
268 dasher->bitstream_switching_mode = bitstream_switching; in gf_dasher_set_switch_mode()
273 GF_Err gf_dasher_set_durations(GF_DASHSegmenter *dasher, Double default_segment_duration, Double de… in gf_dasher_set_durations() argument
275 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_durations()
276 dasher->segment_duration = default_segment_duration * 1000 / dasher->dash_scale; in gf_dasher_set_durations()
278 dasher->fragment_duration = default_fragment_duration * 1000 / dasher->dash_scale; in gf_dasher_set_durations()
280 dasher->fragment_duration = dasher->segment_duration; in gf_dasher_set_durations()
281 dasher->sub_duration = sub_duration; in gf_dasher_set_durations()
286 GF_Err gf_dasher_enable_rap_splitting(GF_DASHSegmenter *dasher, Bool segments_start_with_rap, Bool … in gf_dasher_enable_rap_splitting() argument
288 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_rap_splitting()
289 dasher->segments_start_with_rap = segments_start_with_rap; in gf_dasher_enable_rap_splitting()
290 dasher->fragments_start_with_rap = fragments_start_with_rap; in gf_dasher_enable_rap_splitting()
295 GF_Err gf_dasher_set_segment_marker(GF_DASHSegmenter *dasher, u32 segment_marker_4cc) in gf_dasher_set_segment_marker() argument
297 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_segment_marker()
298 dasher->segment_marker_4cc = segment_marker_4cc; in gf_dasher_set_segment_marker()
303 GF_Err gf_dasher_print_session_info(GF_DASHSegmenter *dasher, u32 fs_print_flags) in gf_dasher_print_session_info() argument
305 if (!dasher) return GF_BAD_PARAM; in gf_dasher_print_session_info()
306 dasher->print_stats_graph = fs_print_flags; in gf_dasher_print_session_info()
313 GF_Err gf_dasher_enable_sidx(GF_DASHSegmenter *dasher, Bool enable_sidx, u32 subsegs_per_sidx, Bool… in gf_dasher_enable_sidx() argument
315 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_sidx()
316 dasher->enable_sidx = enable_sidx; in gf_dasher_enable_sidx()
317 dasher->subsegs_per_sidx = subsegs_per_sidx; in gf_dasher_enable_sidx()
318 dasher->daisy_chain_sidx = daisy_chain_sidx; in gf_dasher_enable_sidx()
319 dasher->use_ssix = use_ssix; in gf_dasher_enable_sidx()
324 GF_Err gf_dasher_set_dynamic_mode(GF_DASHSegmenter *dasher, GF_DashDynamicMode dash_mode, Double mp… in gf_dasher_set_dynamic_mode() argument
326 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_dynamic_mode()
327 if (dasher->dash_mode != dash_mode) { in gf_dasher_set_dynamic_mode()
328 dasher->dash_mode = dash_mode; in gf_dasher_set_dynamic_mode()
329 dasher->dash_mode_changed = GF_TRUE; in gf_dasher_set_dynamic_mode()
331 dasher->time_shift_depth = time_shift_depth; in gf_dasher_set_dynamic_mode()
332 dasher->mpd_update_time = mpd_update_time; in gf_dasher_set_dynamic_mode()
333 dasher->mpd_live_duration = mpd_live_duration; in gf_dasher_set_dynamic_mode()
338 GF_Err gf_dasher_set_min_buffer(GF_DASHSegmenter *dasher, Double min_buffer) in gf_dasher_set_min_buffer() argument
340 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_min_buffer()
341 dasher->min_buffer_time = (u32)(min_buffer*1000); in gf_dasher_set_min_buffer()
346 GF_Err gf_dasher_set_ast_offset(GF_DASHSegmenter *dasher, s32 ast_offset_ms) in gf_dasher_set_ast_offset() argument
348 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_ast_offset()
349 dasher->ast_offset_ms = ast_offset_ms; in gf_dasher_set_ast_offset()
354 GF_Err gf_dasher_enable_memory_fragmenting(GF_DASHSegmenter *dasher, Bool fragments_in_memory) in gf_dasher_enable_memory_fragmenting() argument
356 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_memory_fragmenting()
357 dasher->fragments_in_memory = fragments_in_memory; in gf_dasher_enable_memory_fragmenting()
362 GF_Err gf_dasher_set_initial_isobmf(GF_DASHSegmenter *dasher, u32 initial_moof_sn, u64 initial_tfdt) in gf_dasher_set_initial_isobmf() argument
364 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_initial_isobmf()
365 dasher->initial_moof_sn = initial_moof_sn; in gf_dasher_set_initial_isobmf()
366 dasher->initial_tfdt = initial_tfdt; in gf_dasher_set_initial_isobmf()
371 GF_Err gf_dasher_configure_isobmf_default(GF_DASHSegmenter *dasher, Bool no_fragments_defaults, GF_… in gf_dasher_configure_isobmf_default() argument
373 if (!dasher) return GF_BAD_PARAM; in gf_dasher_configure_isobmf_default()
374 dasher->no_fragments_defaults = no_fragments_defaults; in gf_dasher_configure_isobmf_default()
375 dasher->pssh_mode = pssh_mode; in gf_dasher_configure_isobmf_default()
376 dasher->samplegroups_in_traf = samplegroups_in_traf; in gf_dasher_configure_isobmf_default()
377 dasher->single_traf_per_moof = single_traf_per_moof; in gf_dasher_configure_isobmf_default()
378 dasher->tfdt_per_traf = tfdt_per_traf; in gf_dasher_configure_isobmf_default()
379 dasher->mvex_after_traks = mvex_after_traks; in gf_dasher_configure_isobmf_default()
380 dasher->sdtp_in_traf = sdtp_in_traf; in gf_dasher_configure_isobmf_default()
385 GF_Err gf_dasher_enable_utc_ref(GF_DASHSegmenter *dasher, Bool insert_utc) in gf_dasher_enable_utc_ref() argument
387 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_utc_ref()
388 dasher->insert_utc = insert_utc; in gf_dasher_enable_utc_ref()
393 GF_Err gf_dasher_enable_real_time(GF_DASHSegmenter *dasher, Bool real_time) in gf_dasher_enable_real_time() argument
395 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_real_time()
396 dasher->real_time = real_time; in gf_dasher_enable_real_time()
401 GF_Err gf_dasher_set_content_protection_location_mode(GF_DASHSegmenter *dasher, GF_DASH_ContentLoca… in gf_dasher_set_content_protection_location_mode() argument
403 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_content_protection_location_mode()
404 dasher->cp_location_mode = mode; in gf_dasher_set_content_protection_location_mode()
409 GF_Err gf_dasher_set_profile_extension(GF_DASHSegmenter *dasher, const char *dash_profile_extension) in gf_dasher_set_profile_extension() argument
411 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_profile_extension()
412 dasher->dash_profile_extension = dash_profile_extension; in gf_dasher_set_profile_extension()
417 GF_Err gf_dasher_enable_cached_inputs(GF_DASHSegmenter *dasher, Bool no_cache) in gf_dasher_enable_cached_inputs() argument
419 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_cached_inputs()
420 dasher->no_cache = no_cache; in gf_dasher_enable_cached_inputs()
425 GF_Err gf_dasher_enable_loop_inputs(GF_DASHSegmenter *dasher, Bool do_loop) in gf_dasher_enable_loop_inputs() argument
427 if (!dasher) return GF_BAD_PARAM; in gf_dasher_enable_loop_inputs()
428 dasher->disable_loop = do_loop ? GF_FALSE : GF_TRUE; in gf_dasher_enable_loop_inputs()
433 GF_Err gf_dasher_set_hls_clock(GF_DASHSegmenter *dasher, Bool insert_clock) in gf_dasher_set_hls_clock() argument
435 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_hls_clock()
436 dasher->hls_clock = insert_clock; in gf_dasher_set_hls_clock()
441 GF_Err gf_dasher_set_split_mode(GF_DASHSegmenter *dasher, GF_DASH_SplitMode split_mode) in gf_dasher_set_split_mode() argument
443 if (!dasher) return GF_BAD_PARAM; in gf_dasher_set_split_mode()
444 dasher->split_mode = split_mode; in gf_dasher_set_split_mode()
449 GF_Err gf_dasher_set_cues(GF_DASHSegmenter *dasher, const char *cues_file, Bool strict_cues) in gf_dasher_set_cues() argument
451 dasher->cues_file = cues_file; in gf_dasher_set_cues()
452 dasher->strict_cues = strict_cues; in gf_dasher_set_cues()
457 GF_Err gf_dasher_add_input(GF_DASHSegmenter *dasher, const GF_DashSegmenterInput *input) in gf_dasher_add_input() argument
459 if (!dasher) return GF_BAD_PARAM; in gf_dasher_add_input()
468 gf_list_add(dasher->inputs, (void *) input); in gf_dasher_add_input()
476 GF_DASHSegmenter *dasher = (GF_DASHSegmenter *)_udta; in on_dasher_event() local
480 if (!dasher->dash_filter_idx_plus_one) { in on_dasher_event()
481 count = gf_fs_get_filters_count(dasher->fsess); in on_dasher_event()
483 if (gf_fs_get_filter_stats(dasher->fsess, i, &stats) != GF_OK) continue; in on_dasher_event()
485 dasher->dash_filter_idx_plus_one = i+1; in on_dasher_event()
488 if (!dasher->dash_filter_idx_plus_one) return GF_FALSE; in on_dasher_event()
490 if (gf_fs_get_filter_stats(dasher->fsess, dasher->dash_filter_idx_plus_one-1, &stats) != GF_OK) in on_dasher_event()
494 if (stats.percent/100 == dasher->last_prog) return GF_FALSE; in on_dasher_event()
495 dasher->last_prog = stats.percent / 100; in on_dasher_event()
506 static GF_Err gf_dasher_setup(GF_DASHSegmenter *dasher) in gf_dasher_setup() argument
514 if (!dasher->mpd_name) { in gf_dasher_setup()
519 dasher->fsess = gf_fs_new_defaults(0); in gf_dasher_setup()
523 gf_fs_enable_reporting(dasher->fsess, GF_TRUE); in gf_dasher_setup()
524 gf_fs_set_ui_callback(dasher->fsess, on_dasher_event, dasher); in gf_dasher_setup()
528 if (!dasher->fsess) { in gf_dasher_setup()
533 sep_ext = gf_url_colon_suffix(dasher->mpd_name); in gf_dasher_setup()
545 sprintf(szArg, "segdur=%g", dasher->segment_duration); in gf_dasher_setup()
551 if (dasher->single_segment) e |= gf_dynstrcat(&args, "sseg", ":"); in gf_dasher_setup()
552 if (dasher->single_file) e |= gf_dynstrcat(&args, "sfile", ":"); in gf_dasher_setup()
553 if (dasher->use_url_template) e |= gf_dynstrcat(&args, "tpl", ":"); in gf_dasher_setup()
554 if (dasher->use_segment_timeline) e |= gf_dynstrcat(&args, "stl", ":"); in gf_dasher_setup()
555 if (dasher->dash_mode) { in gf_dasher_setup()
556 …e |= gf_dynstrcat(&args, (dasher->dash_mode == GF_DASH_DYNAMIC_LAST) ? "dynlast" : "dynamic", ":"); in gf_dasher_setup()
560 if (dasher->disable_segment_alignment) e |= gf_dynstrcat(&args, "!align", ":"); in gf_dasher_setup()
561 if (dasher->enable_mix_codecs) e |= gf_dynstrcat(&args, "mix_codecs", ":"); in gf_dasher_setup()
562 if (dasher->insert_utc) e |= gf_dynstrcat(&args, "ntp=yes", ":"); in gf_dasher_setup()
563 if (dasher->enable_sar_mix) e |= gf_dynstrcat(&args, "no_sar", ":"); in gf_dasher_setup()
565 switch (dasher->bitstream_switching_mode) { in gf_dasher_setup()
585 if (dasher->seg_rad_name) { in gf_dasher_setup()
586 sprintf(szArg, "template=%s", dasher->seg_rad_name); in gf_dasher_setup()
589 if (dasher->seg_ext) { in gf_dasher_setup()
590 sprintf(szArg, "segext=%s", dasher->seg_ext); in gf_dasher_setup()
593 if (dasher->seg_init_ext) { in gf_dasher_setup()
594 sprintf(szArg, "initext=%s", dasher->seg_init_ext); in gf_dasher_setup()
597 if (dasher->ast_offset_ms) { in gf_dasher_setup()
598 sprintf(szArg, "asto=%d", -dasher->ast_offset_ms); in gf_dasher_setup()
601 switch (dasher->profile) { in gf_dasher_setup()
615 if (!dasher->segments_start_with_rap) e |= gf_dynstrcat(&args, "!sap", ":"); in gf_dasher_setup()
627 …if (dasher->cp_location_mode==GF_DASH_CPMODE_REPRESENTATION) e |= gf_dynstrcat(&args, "cp=rep", ":… in gf_dasher_setup()
628 else if (dasher->cp_location_mode==GF_DASH_CPMODE_BOTH) e |= gf_dynstrcat(&args, "cp=both", ":"); in gf_dasher_setup()
630 if (dasher->min_buffer_time) { in gf_dasher_setup()
631 sprintf(szArg, "buf=%d", dasher->min_buffer_time); in gf_dasher_setup()
634 if (dasher->dash_scale != 1000) { in gf_dasher_setup()
635 sprintf(szArg, "timescale=%d", dasher->dash_scale); in gf_dasher_setup()
638 if (!dasher->check_duration) e |= gf_dynstrcat(&args, "!check_dur", ":"); in gf_dasher_setup()
643 if (dasher->dash_mode >= GF_DASH_DYNAMIC) { in gf_dasher_setup()
644 if (dasher->time_shift_depth<0) e |= gf_dynstrcat(&args, "tsb=-1", ":"); in gf_dasher_setup()
646 sprintf(szArg, "tsb=%g", ((Double)dasher->time_shift_depth)/1000); in gf_dasher_setup()
650 if (dasher->utc_start_date) { in gf_dasher_setup()
651 sprintf(szArg, "ast=%s", dasher->utc_start_date); in gf_dasher_setup()
654 if (dasher->mpd_update_time) { in gf_dasher_setup()
655 sprintf(szArg, "refresh=%g", dasher->mpd_update_time); in gf_dasher_setup()
659 sprintf(szArg, "refresh=-%g", dasher->mpd_live_duration); in gf_dasher_setup()
663 if (dasher->sub_duration) { in gf_dasher_setup()
664 sprintf(szArg, "subdur=%g", dasher->sub_duration); in gf_dasher_setup()
667 if (dasher->dash_state) { in gf_dasher_setup()
668 sprintf(szArg, "state=%s", dasher->dash_state); in gf_dasher_setup()
671 if (! dasher->disable_loop && dasher->dash_state) e |= gf_dynstrcat(&args, "loop", ":"); in gf_dasher_setup()
672 if (dasher->hls_clock) e |= gf_dynstrcat(&args, "hlsc", ":"); in gf_dasher_setup()
676 if (dasher->dash_mode>=GF_DASH_DYNAMIC) { in gf_dasher_setup()
677 sprintf(szArg, "_p_gentime=%p", &dasher->next_gen_ntp_ms); in gf_dasher_setup()
679 sprintf(szArg, "_p_mpdtime=%p", &dasher->mpd_time_ms); in gf_dasher_setup()
684 if (dasher->fragment_duration) { in gf_dasher_setup()
685 Double diff = dasher->fragment_duration; in gf_dasher_setup()
686 diff -= dasher->segment_duration; in gf_dasher_setup()
689 sprintf(szArg, "cdur=%g", dasher->fragment_duration); in gf_dasher_setup()
693 if (dasher->segment_marker_4cc) { in gf_dasher_setup()
694 sprintf(szArg, "m4cc=%s", gf_4cc_to_str(dasher->segment_marker_4cc) ); in gf_dasher_setup()
697 if (dasher->daisy_chain_sidx) e |= gf_dynstrcat(&args, "chain_sidx", ":"); in gf_dasher_setup()
698 if (dasher->use_ssix) e |= gf_dynstrcat(&args, "ssix", ":"); in gf_dasher_setup()
699 if (dasher->initial_moof_sn) { in gf_dasher_setup()
700 sprintf(szArg, "msn=%d", dasher->initial_moof_sn ); in gf_dasher_setup()
703 if (dasher->initial_tfdt) { in gf_dasher_setup()
704 sprintf(szArg, "tfdt="LLU"", dasher->initial_tfdt ); in gf_dasher_setup()
707 if (dasher->no_fragments_defaults) e |= gf_dynstrcat(&args, "nofragdef", ":"); in gf_dasher_setup()
708 if (dasher->single_traf_per_moof) e |= gf_dynstrcat(&args, "straf", ":"); in gf_dasher_setup()
709 if (dasher->single_trun_per_traf) e |= gf_dynstrcat(&args, "strun", ":"); in gf_dasher_setup()
710 switch (dasher->pssh_mode) { in gf_dasher_setup()
729 if (dasher->samplegroups_in_traf) e |= gf_dynstrcat(&args, "sgpd_traf", ":"); in gf_dasher_setup()
730 if (dasher->enable_sidx) { in gf_dasher_setup()
731 sprintf(szArg, "subs_sidx=%d", dasher->subsegs_per_sidx ); in gf_dasher_setup()
735 if (dasher->fragments_start_with_rap) e |= gf_dynstrcat(&args, "sfrag", ":"); in gf_dasher_setup()
736 if (dasher->tmpdir) { in gf_dasher_setup()
737 sprintf(szArg, "tmpd=%s", dasher->tmpdir ); in gf_dasher_setup()
741 if (dasher->cues_file) { in gf_dasher_setup()
742 sprintf(szArg, "cues=%s", dasher->cues_file ); in gf_dasher_setup()
745 if (dasher->strict_cues) e |= gf_dynstrcat(&args, "strict_cues", ":"); in gf_dasher_setup()
747 if (dasher->mvex_after_traks) e |= gf_dynstrcat(&args, "mvex", ":"); in gf_dasher_setup()
748 if (dasher->sdtp_in_traf==1) e |= gf_dynstrcat(&args, "sdtp_traf=sdtp", ":"); in gf_dasher_setup()
749 else if (dasher->sdtp_in_traf==2) e |= gf_dynstrcat(&args, "sdtp_traf=both", ":"); in gf_dasher_setup()
751 if (dasher->split_mode==GF_DASH_SPLIT_CLOSEST) in gf_dasher_setup()
753 else if (dasher->split_mode==GF_DASH_SPLIT_IN) in gf_dasher_setup()
757 if (dasher->dash_profile_extension) { in gf_dasher_setup()
758 sprintf(szArg, "profX=%s", dasher->dash_profile_extension); in gf_dasher_setup()
761 if (dasher->title) { in gf_dasher_setup()
762 sprintf(szArg, "title=%s", dasher->title); in gf_dasher_setup()
765 if (dasher->sourceInfo) { in gf_dasher_setup()
766 sprintf(szArg, "source=%s", dasher->sourceInfo); in gf_dasher_setup()
769 if (dasher->moreInfoURL) { in gf_dasher_setup()
770 sprintf(szArg, "info=%s", dasher->moreInfoURL); in gf_dasher_setup()
773 if (dasher->copyright) { in gf_dasher_setup()
774 sprintf(szArg, "cprt=%s", dasher->copyright); in gf_dasher_setup()
777 if (dasher->lang) { in gf_dasher_setup()
778 sprintf(szArg, "lang=%s", dasher->lang); in gf_dasher_setup()
781 if (dasher->locations) { in gf_dasher_setup()
782 sprintf(szArg, "location=%s", dasher->locations); in gf_dasher_setup()
785 if (dasher->base_urls) { in gf_dasher_setup()
786 sprintf(szArg, "base=%s", dasher->base_urls); in gf_dasher_setup()
790 dasher->dash_mode_changed = GF_FALSE; in gf_dasher_setup()
791 …OG_DASH, ("[DASH] Instantiating dasher filter for dst %s with args %s\n", dasher->mpd_name, args)); in gf_dasher_setup()
798 dasher->output = gf_fs_load_destination(dasher->fsess, dasher->mpd_name, args, NULL, &e); in gf_dasher_setup()
806 if (!dasher->output) { in gf_dasher_setup()
812 count = gf_list_count(dasher->inputs); in gf_dasher_setup()
815 GF_DashSegmenterInput *di = gf_list_get(dasher->inputs, i); in gf_dasher_setup()
826 GF_DashSegmenterInput *di = gf_list_get(dasher->inputs, i); in gf_dasher_setup()
832 a_di = gf_list_get(dasher->inputs, j); in gf_dasher_setup()
852 GF_DashSegmenterInput *di = gf_list_get(dasher->inputs, i); in gf_dasher_setup()
854 if (dasher->real_time) { in gf_dasher_setup()
855 rt = gf_fs_load_filter(dasher->fsess, "reframer:rt=sync", NULL); in gf_dasher_setup()
1011 src = gf_fs_load_source(dasher->fsess, url, args, NULL, &e); in gf_dasher_setup()
1036 f = gf_fs_load_filter(dasher->fsess, fargs, &e); in gf_dasher_setup()
1050 gf_filter_set_source(dasher->output, prev_filter, NULL); in gf_dasher_setup()
1099 GF_Err gf_dasher_process(GF_DASHSegmenter *dasher) in gf_dasher_process() argument
1105 …if (dasher->dash_state && gf_file_exists(dasher->dash_state) && (dasher->dash_mode>=GF_DASH_DYNAMI… in gf_dasher_process()
1107 e = dash_state_check_timing(dasher->dash_state, &dasher->next_gen_ntp_ms, &diff); in gf_dasher_process()
1115 if (!dasher->fsess) { in gf_dasher_process()
1116 e = gf_dasher_setup(dasher); in gf_dasher_process()
1120 gf_fs_get_last_connect_error(dasher->fsess); in gf_dasher_process()
1121 gf_fs_get_last_process_error(dasher->fsess); in gf_dasher_process()
1124 if (dasher->dash_mode_changed) { in gf_dasher_process()
1125 …gf_filter_send_update(dasher->output, NULL, "dmode", (dasher->dash_mode == GF_DASH_DYNAMIC_LAST) … in gf_dasher_process()
1131 evt.base.on_pid = gf_filter_get_ipid(dasher->output, 0); in gf_dasher_process()
1132 gf_filter_send_event(dasher->output, &evt, GF_FALSE); in gf_dasher_process()
1135 e = gf_fs_run(dasher->fsess); in gf_dasher_process()
1138 if (dasher->print_stats_graph & 1) gf_fs_print_stats(dasher->fsess); in gf_dasher_process()
1139 if (dasher->print_stats_graph & 2) gf_fs_print_connections(dasher->fsess); in gf_dasher_process()
1141 if (!e) e = gf_fs_get_last_connect_error(dasher->fsess); in gf_dasher_process()
1142 if (!e) e = gf_fs_get_last_process_error(dasher->fsess); in gf_dasher_process()
1145 on_dasher_event(dasher, NULL); in gf_dasher_process()
1148 if (dasher->no_cache) { in gf_dasher_process()
1149 gf_fs_del(dasher->fsess); in gf_dasher_process()
1150 dasher->fsess = NULL; in gf_dasher_process()