libgpac
Documentation of the core library of GPAC
Loading...
Searching...
No Matches
dasher.c File Reference
#include <gpac/filters.h>
#include <gpac/constants.h>
#include <gpac/iso639.h>
#include <gpac/mpd.h>
#include <gpac/internal/media_dev.h>
#include <gpac/base_coding.h>
#include <gpac/network.h>
#include <gpac/crypt_tools.h>
+ Include dependency graph for dasher.c:

Data Structures

struct  GF_DasherPeriod
 
struct  GF_DasherCtx
 
struct  GF_DashStream
 
struct  DashTemplateRecord
 
struct  PeriodInfo
 

Macros

#define DEFAULT_PERIOD_ID   "_gf_dash_def_period"
 
#define CHECK_PROP(_type, _mem, _e)
 
#define CHECK_PROPL(_type, _mem, _e)
 
#define CHECK_PROP_BOOL(_type, _mem, _e)
 
#define CHECK_PROP_FRAC(_type, _mem, _e)
 
#define CHECK_PROP_FRAC64(_type, _mem, _e)
 
#define CHECK_PROP_STR(_type, _mem, _e)
 
#define CHECK_PROP_PROP(_type, _mem, _e)
 
#define CHECK_VAL(_name, _v)   if (rep->_name != n_rep->_name) { rep->_name = n_rep->_name; transcode_detected = GF_TRUE; if (_v) recompute_set = GF_TRUE; }
 
#define CHECK_STR(_name)
 
#define CHECK_FRAC(_name)
 
#define RESET_PROP_STR(_prop)    if (_prop) gf_free(_prop);
 
#define MPD_EXTS   "mpd|m3u8|3gm|ism|ghix|ghi"
 
#define MPD_MIMES   "application/dash+xml|video/vnd.3gpp.mpd|audio/vnd.3gpp.mpd|video/vnd.mpeg.dash.mpd|audio/vnd.mpeg.dash.mpd|audio/mpegurl|video/mpegurl|application/vnd.ms-sstr+xml|application/x-gpac-ghi|application/x-gpac-ghix"
 
#define OFFS(_n)   #_n, offsetof(GF_DasherCtx, _n)
 

Typedefs

typedef u32 DasherBSSwitchingMode
 
typedef u32 DasherNTPClockMode
 
typedef u32 DasherSAPStrictMode
 
typedef u32 DasherTSSHandlingMode
 
typedef u32 DasherMuxType
 
typedef u32 DasherAdaptSetGenMode
 
typedef u32 DasherCMAFMode
 
typedef u32 DasherDefaultKIDInjection
 
typedef u32 DasherPeriodSwitchMode
 
typedef u32 DasherWaitLastPktCtrl
 
typedef u32 DasherSegFlushMode
 

Enumerations

enum  DasherBSSwitchingMode_t {
  DASHER_BS_SWITCH_DEF =0 , DASHER_BS_SWITCH_OFF , DASHER_BS_SWITCH_ON , DASHER_BS_SWITCH_INBAND ,
  DASHER_BS_SWITCH_INBAND_PPS , DASHER_BS_SWITCH_BOTH , DASHER_BS_SWITCH_FORCE , DASHER_BS_SWITCH_MULTI
}
 
enum  DasherUTCTimingType {
  DASHER_UTCREF_NONE =0 , DASHER_UTCREF_NTP , DASHER_UTCREF_HTTP_HEAD , DASHER_UTCREF_ISO ,
  DASHER_UTCREF_XSDATE , DASHER_UTCREF_INBAND
}
 
enum  DasherNTPClockMode_t { DASHER_NTP_REM =0 , DASHER_NTP_YES , DASHER_NTP_KEEP }
 
enum  DasherSAPStrictMode_t { DASHER_SAP_OFF =0 , DASHER_SAP_SIG , DASHER_SAP_ON , DASHER_SAP_INTRA_ONLY }
 
enum  DasherTSSHandlingMode_t { DASHER_BOUNDS_OUT =0 , DASHER_BOUNDS_CLOSEST , DASHER_BOUNDS_IN }
 
enum  DasherMuxType_t {
  DASHER_MUX_ISOM =0 , DASHER_MUX_TS , DASHER_MUX_MKV , DASHER_MUX_WEBM ,
  DASHER_MUX_OGG , DASHER_MUX_RAW , DASHER_MUX_AUTO
}
 
enum  DasherAdaptSetGenMode_t { DASHER_MPHA_NO =0 , DASHER_MPHA_COMP_ONLY , DASHER_MPHA_ALL }
 
enum  { DASHER_FWD_NO = 0 , DASHER_FWD_SEGS , DASHER_FWD_ALL }
 
enum  { DASHER_SYNC_UNKNOWN =0 , DASHER_SYNC_NONE , DASHER_SYNC_PRESENT }
 
enum  DasherCMAFMode_t { DASHER_CMAF_NONE =0 , DASHER_CMAF_CMFC , DASHER_CMAF_CMF2 }
 
enum  DasherDefaultKIDInjection_t { DASHER_DEFKID_OFF =0 , DASHER_DEFKID_ON , DASHER_DEFKID_AUTO }
 
enum  DasherPeriodSwitchMode_t { DASHER_PSWITCH_SINGLE =0 , DASHER_PSWITCH_FORCE , DASHER_PSWITCH_STSD }
 
enum  DasherWaitLastPktCtrl_t { DASHER_SEGSYNC_NO =0 , DASHER_SEGSYNC_YES , DASHER_SEGSYNC_AUTO }
 
enum  {
  IDXMODE_NONE =0 , IDXMODE_ALL , IDXMODE_MANIFEST , IDXMODE_CHILD ,
  IDXMODE_INIT , IDXMODE_SEG
}
 
enum  DasherSegFlushMode_t { SFLUSH_OFF =0 , SFLUSH_SINGLE , SFLUSH_END }
 
enum  { DASH_INITSEG_PRESENT =0 , DASH_INITSEG_NONE , DASH_INITSEG_SKIP }
 

Functions

char * gf_filter_pid_get_destination_ex (GF_FilterPid *pid, u32 dst_idx)
 
void gf_filter_skip_seg_size_events (GF_Filter *f)
 
void gf_filter_pid_force_single_link (GF_FilterPid *pid)
 
void gf_filter_pid_disable_clone (GF_FilterPid *pid)
 
static void dasher_flush_segment (GF_DasherCtx *ctx, GF_DashStream *ds, Bool is_last_in_period)
 
static void dasher_update_rep (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static void dasher_reset_stream (GF_Filter *filter, GF_DashStream *ds, Bool is_destroy)
 
static void dasher_update_period_duration (GF_DasherCtx *ctx, Bool is_period_switch)
 
static GF_Err dasher_setup_period (GF_Filter *filter, GF_DasherCtx *ctx, GF_DashStream *for_ds)
 
static GF_Err dasher_setup_profile (GF_DasherCtx *ctx)
 
static GF_DasherPerioddasher_new_period ()
 
static GF_Err dasher_get_audio_info_with_m4a_sbr_ps (GF_DashStream *ds, const GF_PropertyValue *dsi, u32 *SampleRate, u32 *Channels)
 
static void dasher_ensure_outpath (GF_DasherCtx *ctx)
 
static GF_Err dasher_hls_setup_crypto (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static u32 dasher_get_dep_bitrate (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static void dasher_update_bitrate (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static GF_Err dasher_stream_period_changed (GF_Filter *filter, GF_DasherCtx *ctx, GF_DashStream *ds, Bool is_new_period_request)
 
static void dasher_get_dash_dur (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static void dasher_send_transport_hints (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static Bool dasher_template_use_source_url (const char *template)
 
static Bool dasher_merge_prop (void *cbk, u32 prop_4cc, const char *prop_name, const GF_PropertyValue *src_prop)
 
static GF_Err dasher_configure_pid (GF_Filter *filter, GF_FilterPid *pid, Bool is_remove)
 
static void dasher_check_chaining (GF_DasherCtx *ctx, char *scheme_id, char *url)
 
static GF_Err dasher_update_mpd (GF_DasherCtx *ctx)
 
static GF_Err dasher_setup_mpd (GF_DasherCtx *ctx)
 
static GF_Err dasher_get_rfc_6381_codec_name (GF_DasherCtx *ctx, GF_DashStream *ds, char *szCodec, Bool force_inband, Bool force_sbr)
 
static GF_DashStreamget_base_ds (GF_DasherCtx *ctx, GF_DashStream *for_ds)
 
static void get_canon_urn (bin128 URN, char *res)
 
static const char * get_drm_kms_name (const char *canURN)
 
static GF_List * dasher_get_content_protection_desc (GF_DasherCtx *ctx, GF_DashStream *ds, GF_MPD_AdaptationSet *for_set)
 
static void dasher_get_mime_and_ext (GF_DasherCtx *ctx, GF_DashStream *ds, const char **out_subtype, const char **out_ext)
 
static void dasher_setup_rep (GF_DasherCtx *ctx, GF_DashStream *ds, u32 *srd_rep_idx)
 
static Bool dasher_same_roles (GF_DashStream *ds1, GF_DashStream *ds2)
 
static u32 dasher_get_next_as_id (GF_DasherCtx *ctx)
 
static Bool dasher_same_adaptation_set (GF_DasherCtx *ctx, GF_DashStream *ds, GF_DashStream *ds_test)
 
static void dasher_add_descriptors (GF_List **p_dst_list, const GF_PropertyValue *desc_val)
 
static void dasher_add_inband_event (GF_DashStream *ds)
 
static void dasher_setup_set_defaults (GF_DasherCtx *ctx, GF_MPD_AdaptationSet *set)
 
static void rewrite_dep_ids (GF_DasherCtx *ctx, GF_DashStream *base_ds)
 
static void dasher_check_bitstream_switching (GF_DasherCtx *ctx, GF_MPD_AdaptationSet *set)
 
GF_Err gf_cryptfout_push_key (GF_Filter *filter, bin128 *key, bin128 *IV)
 
static void dasher_open_destination (GF_Filter *filter, GF_DasherCtx *ctx, GF_MPD_Representation *rep, const char *szInitURL, u32 trash_init)
 
static void dasher_gather_deps (GF_DasherCtx *ctx, u32 dependency_id, GF_List *multi_tracks)
 
static void dasher_update_dep_list (GF_DasherCtx *ctx, GF_DashStream *ds, const char *ref_type)
 
static void dasher_inject_scte35_processor (GF_Filter *filter, GF_DashStream *ds, char *szSRC)
 
static void dasher_open_pid (GF_Filter *filter, GF_DasherCtx *ctx, GF_DashStream *ds, GF_List *multi_pids, Bool init_trashed)
 
static void dasher_set_content_components (GF_DashStream *ds)
 
static char * dasher_cat_mpd_url (GF_DasherCtx *ctx, GF_DashStream *ds, const char *url)
 
static u32 dasher_check_template_reuse (GF_DasherCtx *ctx, GF_DashStream *ds, const char *tpl)
 
static Bool dasher_check_hls_variant_path (GF_DasherCtx *ctx, GF_DashStream *ds, GF_DashStream *a_ds)
 
static void dasher_setup_sources (GF_Filter *filter, GF_DasherCtx *ctx, GF_MPD_AdaptationSet *set)
 
static void dasher_purge_segment_timeline (GF_DashStream *ds, GF_MPD_SegmentTimeline *stl, GF_DASH_SegmentContext *sctx)
 
static void send_file_delete (GF_DasherCtx *ctx, GF_DashStream *ds, const char *filename, const char *filepath, s32 part_idx)
 
static void dasher_purge_segments (GF_DasherCtx *ctx, u64 *period_dur)
 
static void dasher_transfer_file (FILE *f, GF_FilterPid *opid, const char *name, GF_DashStream *ds, Bool is_rel_url)
 
static u64 dasher_get_utc (GF_DasherCtx *ctx)
 
static void dasher_get_set_and_rep (GF_MPD_Period *period, const char *repid, GF_MPD_AdaptationSet **out_set, GF_MPD_Representation **out_rep)
 
static Bool dasher_merge_rep (GF_DashStream *ds, GF_MPD_Representation *rep)
 
static void dasher_forward_manifest_raw (GF_DasherCtx *ctx, GF_DashStream *ds, const char *manifest, const char *manifest_name)
 
static void dasher_forward_mpd (GF_DasherCtx *ctx, const char *manifest)
 
static GF_Err dasher_write_index (GF_DasherCtx *ctx, GF_FilterPid *opid)
 
static GF_Err dasher_write_and_send_manifest (GF_DasherCtx *ctx, u64 last_period_dur, Bool do_m3u8, Bool m3u8_second_pass, GF_FilterPid *opid, char *alt_name)
 
static void dasher_update_dyn_bitrates (GF_DasherCtx *ctx)
 
GF_Err dasher_send_manifest (GF_Filter *filter, GF_DasherCtx *ctx, Bool for_mpd_only)
 
void dasher_context_update_period_end (GF_DasherCtx *ctx)
 
void dasher_context_update_period_start (GF_DasherCtx *ctx)
 
static GF_DashStreamdasher_get_stream (GF_DasherCtx *ctx, const char *src_url, u32 original_pid, const char *original_period_id, const char *original_rep_id)
 
static GF_Err dasher_reload_muxed_comp (GF_DasherCtx *ctx, GF_DashStream *base_ds, GF_MPD_Representation *base_rep_ctx, Bool check_only)
 
static GF_Err dasher_reload_context (GF_Filter *filter, GF_DasherCtx *ctx)
 
static void dasher_udpate_periods_and_manifest (GF_Filter *filter, GF_DasherCtx *ctx)
 
static u32 dasher_period_count (GF_List *streams_in)
 
static void dasher_init_utc (GF_Filter *filter, GF_DasherCtx *ctx)
 
static GF_Err dasher_switch_period (GF_Filter *filter, GF_DasherCtx *ctx)
 
static GF_Err dasher_setup_ssr (GF_DasherCtx *ctx)
 
static void dasher_insert_timeline_entry (GF_DasherCtx *ctx, GF_DashStream *ds, Bool is_ll_anouncement)
 
static void dasher_copy_segment_timelines (GF_DasherCtx *ctx, GF_MPD_AdaptationSet *set)
 
static void dasher_set_timeline_parts (GF_DasherCtx *ctx, GF_DashStream *ds, GF_DASH_SegmentContext *sctx)
 
static char * dasher_strip_base (GF_DasherCtx *ctx, GF_DashStream *ds, char *seg_url, char *seg_name)
 
static GFINLINE u64 dasher_translate_cts (GF_DashStream *ds, u64 cts)
 
static void dasher_mark_segment_start (GF_DasherCtx *ctx, GF_DashStream *ds, GF_FilterPacket *pck, GF_FilterPacket *in_pck)
 
static Bool dasher_check_loop (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static Bool dasher_check_period_ready (GF_DasherCtx *ctx, Bool is_session_end)
 
void dasher_format_report (GF_Filter *filter, GF_DasherCtx *ctx)
 
static void dasher_drop_input (GF_DasherCtx *ctx, GF_DashStream *ds, Bool discard_all)
 
static void dasher_inject_eods (GF_DasherCtx *ctx, GF_DashStream *ds, Bool forced)
 
static void dasher_send_empty_segment (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static GF_Err dasher_process (GF_Filter *filter)
 
static void dasher_resume_subdur (GF_Filter *filter, GF_DasherCtx *ctx)
 
static void dasher_process_hls_ll (GF_DasherCtx *ctx, const GF_FilterEvent *evt)
 
static Bool dasher_process_event (GF_Filter *filter, const GF_FilterEvent *evt)
 
static GF_Err dasher_initialize (GF_Filter *filter)
 
static void dasher_finalize (GF_Filter *filter)
 
const GF_FilterRegister * dasher_register (GF_FilterSession *session)
 

Variables

static const char * empty_ttml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tt xmlns=\"http://www.w3.org/ns/ttml\" xml:lang=\"en\">\n<head/>\n<body/>\n</tt>"
 
static const GF_FilterCapability DasherCaps []
 
static const GF_FilterArgs DasherArgs []
 
GF_FilterRegister DasherRegister
 

Data Structure Documentation

◆ GF_DasherPeriod

struct GF_DasherPeriod
+ Collaboration diagram for GF_DasherPeriod:
Data Fields
GF_List * streams
GF_MPD_Period * period

◆ GF_DasherCtx

struct GF_DasherCtx
+ Collaboration diagram for GF_DasherCtx:
Data Fields
DasherBSSwitchingMode bs_switch
GF_DashProfile profile
u32 spd
DasherNTPClockMode ntp
GF_DASH_ContentLocationMode cp
s32 subs_sidx
s32 buf
s32 timescale
Bool sfile
Bool sseg
Bool no_sar
Bool mix_codecs
Bool stl
Bool tpl
Bool align
Bool sap
Bool no_frag_def
Bool sidx
Bool split
Bool hlsc
Bool strict_cues
Bool force_flush
Bool last_seg_merge
Bool keep_ts
DasherAdaptSetGenMode mha_compat
DasherSegFlushMode sflush
DasherSAPStrictMode strict_sap
GF_DASHPSSHMode pssh
DasherCMAFMode cmaf
DasherDefaultKIDInjection dkid
GF_Fraction segdur
GF_DashDynamicMode dmode
char * template
char * segext
char * initext
DasherMuxType muxtype
Bool rawsub
char * profX
Double asto
char * ast
char * state
char * cues
char * title
char * source
char * info
char * cprt
char * lang
char * chain
char * chain_fbk
GF_PropStringList location
GF_PropStringList base
Bool check_dur
Bool skip_seg
Bool loop
Bool reschedule
Bool scope_deps
Bool keep_src
Bool tpl_force
Bool keep_segs
Double refresh
Double tsb
Double subdur
u64 * _p_gentime
u64 * _p_mpdtime
Bool cmpd
Bool dual
Bool segcts
Bool sreg
Bool ttml_agg
Bool evte_agg
char * styp
Bool sigfrag
DasherTSSHandlingMode sbound
DasherPeriodSwitchMode pswitch
char * utcs
char * mname
char * hlsdrm
char * ckurl
GF_PropStringList hlsx
GF_DashHLSLowLatencyType llhls
Bool hlsiv
GF_Fraction cdur
Bool ll_preload_hint
Bool ll_rend_rep
Bool gencues
Bool force_init
Bool gxns
Double ll_part_hb
GF_DashAbsoluteURLMode hls_absu
DasherWaitLastPktCtrl seg_sync
Bool hls_ap
Bool in_error
GF_FilterPid * opid
GF_FilterPid * opid_alt
GF_Filter * alt_dst
Bool opid_alt_m3u8
GF_MPD * mpd
GF_DasherPeriod * current_period
GF_DasherPeriod * next_period
GF_List * pids
Bool template_use_source
s32 period_idx
GF_List * tpl_records
Bool use_xlink
Bool use_cenc
Bool check_main_role
Bool use_clearkey
Bool no_fragments_defaults
Bool is_eos
u32 nb_seg_url_pending
u64 last_evt_check_time
Bool on_demand_done
Bool subdur_done
char * out_path
char * out_path_alt
GF_Err setup_failure
Double nb_secs_to_discard
Bool first_context_load
Bool store_init_params
Bool do_m3u8
Bool do_mpd
u32 do_index
Bool is_period_restore
Bool is_empty_period
Bool store_seg_states
GF_List * postponed_pids
u32 last_dyn_period_id
u32 next_pid_id_in_period
Bool post_play_events
Bool force_period_switch
GF_Fraction64 period_switch_cts
Bool period_not_ready
Bool period_pck_sent
Bool check_connections
s32 update_report
Bool purge_segments
u32 nb_playing
Bool use_mabr
Bool no_seg_dur
u32 utc_initialized
DasherUTCTimingType utc_timing_type
s32 utc_diff
Bool force_hls_ll_manifest
u32 forward_mode
u8 last_hls_signature[GF_SHA1_DIGEST_SIZE]
u8 last_mpd_signature[GF_SHA1_DIGEST_SIZE]
u8 last_hls2_signature[GF_SHA1_DIGEST_SIZE]
GF_CryptInfo * cinfo
Bool use_cues
Bool dyn_rate
u64 min_segment_start_time
u64 last_min_segment_start_time
u32 def_max_seg_dur
u32 index_max_seg_dur
u64 index_media_duration
GF_Fraction64 min_cts_period
u32 from_index
u32 def_template
Bool move_to_static
Bool explicit_mode
Bool inband_event

◆ GF_DashStream

struct GF_DashStream
+ Collaboration diagram for GF_DashStream:
Data Fields
GF_FilterPid * ipid
GF_FilterPid * opid
u32 codec_id
u32 timescale
u32 stream_type
u32 dsi_crc
u32 dsi_enh_crc
u32 id
u32 dep_id
u32 src_id
GF_Fraction sar
GF_Fraction fps
u32 width
u32 height
u32 sr
u32 nb_ch
char * lang
Bool interlaced
Bool rawmux
const GF_PropertyValue * p_role
const GF_PropertyValue * p_period_desc
const GF_PropertyValue * p_as_desc
const GF_PropertyValue * p_as_any_desc
const GF_PropertyValue * p_rep_desc
const GF_PropertyValue * p_base_url
char * template
char * xlink
char * hls_vp_name
u32 nb_surround
u32 nb_lfe
u32 atmos_complexity_type
u64 ch_layout
GF_PropVec4i srd
u32 color_primaries
u32 color_transfer_characteristics
u32 color_matrix
u32 color_transfer_characteristics_alt
Bool sscale
Bool skip_sap
u32 view_id
u32 bitrate
GF_DasherPeriod * period
GF_MPD_Period * last_period
GF_Fraction dash_dur
char * period_id
char * period_continuity_id
GF_Fraction64 period_start
GF_Fraction64 period_dur
u32 done
Bool seg_done
u32 nb_comp
u32 nb_comp_done
Bool is_av
u32 nb_rep
u32 nb_rep_done
Double set_seg_duration
char * rep_id
u32 as_id
u32 sync_as_id
struct _dash_stream * muxed_base
GF_List * complementary_streams
GF_List * comp_pids
GF_MPD_Representation * rep
GF_MPD_AdaptationSet * set
Bool owns_set
u32 inband_params
GF_List * multi_pids
GF_List * multi_tracks
u32 force_timescale
u32 startNumber
u32 seg_number
Bool rep_init
Bool forced_period_switch
u64 first_cts
u64 first_dts
s64 pts_minus_cts
Bool is_encrypted
u64 presentation_time_offset
u32 mpd_timescale
u64 seg_start_time
Bool split_set_names
Bool skip_tpl_reuse
u64 max_period_dur
u64 current_max_period_dur
GF_Filter * dst_filter
char * src_url
char * init_seg
char * seg_template
char * idx_template
u32 nb_sap_3
u32 nb_sap_4
u32 pid_id
u32 dep_pid_id
u32 nb_samples_in_source
u32 sync_points_type
GF_List * pending_segment_urls
GF_List * pending_segment_states
u64 next_seg_start
u64 adjusted_next_seg_start
u64 force_rep_end
Bool segment_started
u64 first_cts_in_seg
u64 first_cts_in_next_seg
u64 min_cts_in_seg_plus_one
u64 est_first_cts_in_next_seg
u64 last_cts
u64 last_dts
u64 cumulated_dur
Double cumulated_subdur
Bool subdur_done
u64 subdur_forced_use_period_dur
u64 nb_pck
u64 est_next_dts
u64 seek_to_pck
u64 ts_offset
u32 nb_repeat
Bool splitable
u32 loop_state
u32 split_dur_next
u32 moof_sn_inc
u32 moof_sn
GF_Fraction64 clamped_dur
u32 nb_segments_purged
Double dur_purged
Bool tile_base
Bool tile_dep_id_merged
struct _dash_stream * merged_tile_dep
u32 cues_timescale
u32 nb_cues
GF_DASHCueInfo * cues
Bool cues_use_edits
s32 cues_ts_offset
Bool inband_cues
Bool clamp_done
u32 dcd_not_ready
Bool reschedule
GF_Fraction64 duration
GF_List * packet_queue
u32 nb_sap_in_queue
DasherTSSHandlingMode sbound
u32 request_period_switch
Double gm_duration_total
Double gm_duration_min
Double gm_duration_max
u32 gm_nb_segments
Bool no_seg_dur
u64 hls_ref_id
GF_DASH_SegmentContext * current_seg_state
Bool transcode_detected
GF_CryptInfo * cinfo
GF_TrackCryptInfo * tci
u64 iv_low
u64 iv_high
u32 key_idx
u32 nb_crypt_seg
Bool dyn_bitrate
u64 rate_first_dts_plus_one
u64 rate_last_dts
u64 rate_media_size
u64 period_continuity_next_cts
u64 last_min_segment_start_time
Bool stl
Bool set_period_switch
u32 all_stsd_crc
u64 frag_start_offset
u64 frag_first_ftdt
u32 tpl_use_time
Bool last_stl_is_ll

◆ DashTemplateRecord

struct DashTemplateRecord
Data Fields
char * tpl
u32 nb_reused

◆ PeriodInfo

struct PeriodInfo
+ Collaboration diagram for PeriodInfo:
Data Fields
GF_Fraction64 period_start
const char * period_id

Macro Definition Documentation

◆ DEFAULT_PERIOD_ID

#define DEFAULT_PERIOD_ID   "_gf_dash_def_period"

◆ CHECK_PROP

#define CHECK_PROP (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p && (p->value.uint != _mem) && _mem) period_switch = GF_TRUE; \
if (p) _mem = p->value.uint; \
const GF_PropertyValue * gf_filter_pid_get_property(GF_FilterPid *PID, u32 prop_4cc)
Definition filter_pid.c:6409
@ GF_TRUE
Definition setup.h:474

◆ CHECK_PROPL

#define CHECK_PROPL (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p && (p->value.longuint != _mem) && _mem) period_switch = GF_TRUE; \
if (p) _mem = p->value.longuint; \

◆ CHECK_PROP_BOOL

#define CHECK_PROP_BOOL (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p && (p->value.boolean != _mem) && _mem) period_switch = GF_TRUE; \
if (p) _mem = p->value.uint; \

◆ CHECK_PROP_FRAC

#define CHECK_PROP_FRAC (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p && (p->value.frac.num * _mem.den != p->value.frac.den * _mem.num) && _mem.den && _mem.num) period_switch = GF_TRUE; \
if (p) _mem = p->value.frac; \

◆ CHECK_PROP_FRAC64

#define CHECK_PROP_FRAC64 (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p && (p->value.lfrac.num * _mem.den != p->value.lfrac.den * _mem.num) && _mem.den && _mem.num) period_switch = GF_TRUE; \
if (p) _mem = p->value.lfrac; \

◆ CHECK_PROP_STR

#define CHECK_PROP_STR (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p && p->value.string && _mem && strcmp(_mem, p->value.string)) period_switch = GF_TRUE; \
if (p) { \
if (_mem) gf_free(_mem); \
_mem = gf_strdup(p->value.string); \
}\
void gf_free(void *ptr)
Definition alloc.c:163
char * gf_strdup(const char *str)
Definition alloc.c:168

◆ CHECK_PROP_PROP

#define CHECK_PROP_PROP (   _type,
  _mem,
  _e 
)
Value:
p = gf_filter_pid_get_property(pid, _type); \
if (!p && (_e<=0) ) return _e; \
if (p != _mem) period_switch = GF_TRUE;\
_mem = p; \

◆ CHECK_VAL

#define CHECK_VAL (   _name,
  _v 
)    if (rep->_name != n_rep->_name) { rep->_name = n_rep->_name; transcode_detected = GF_TRUE; if (_v) recompute_set = GF_TRUE; }

◆ CHECK_STR

#define CHECK_STR (   _name)
Value:
if (rep->_name && n_rep->_name && !strcmp(rep->_name, n_rep->_name)) {} \
else if (!rep->_name && !n_rep->_name) {}\
else { \
if (rep->_name) gf_free(rep->_name); \
rep->_name = n_rep->_name ? gf_strdup(n_rep->_name) : NULL; \
transcode_detected = GF_TRUE; \
}

◆ CHECK_FRAC

#define CHECK_FRAC (   _name)
Value:
if (rep->_name && n_rep->_name && (rep->_name->num * n_rep->_name->den == rep->_name->den * n_rep->_name->num)) {} \
else if (!n_rep->_name) {}\
else { \
if (rep->_name) gf_free(rep->_name); \
if (n_rep->_name) { rep->_name = gf_malloc(sizeof(GF_MPD_Fractional)); memcpy(rep->_name, n_rep->_name, sizeof(GF_MPD_Fractional)); } \
else rep->_name = NULL; \
transcode_detected = GF_TRUE; \
}
void * gf_malloc(size_t size)
Definition alloc.c:148
Definition mpd.h:214

◆ RESET_PROP_STR

#define RESET_PROP_STR (   _prop)     if (_prop) gf_free(_prop);

◆ MPD_EXTS

#define MPD_EXTS   "mpd|m3u8|3gm|ism|ghix|ghi"

◆ MPD_MIMES

#define MPD_MIMES   "application/dash+xml|video/vnd.3gpp.mpd|audio/vnd.3gpp.mpd|video/vnd.mpeg.dash.mpd|audio/vnd.mpeg.dash.mpd|audio/mpegurl|video/mpegurl|application/vnd.ms-sstr+xml|application/x-gpac-ghi|application/x-gpac-ghix"

◆ OFFS

#define OFFS (   _n)    #_n, offsetof(GF_DasherCtx, _n)

Typedef Documentation

◆ DasherBSSwitchingMode

◆ DasherNTPClockMode

◆ DasherSAPStrictMode

◆ DasherTSSHandlingMode

◆ DasherMuxType

typedef u32 DasherMuxType

◆ DasherAdaptSetGenMode

◆ DasherCMAFMode

◆ DasherDefaultKIDInjection

◆ DasherPeriodSwitchMode

◆ DasherWaitLastPktCtrl

◆ DasherSegFlushMode

Enumeration Type Documentation

◆ DasherBSSwitchingMode_t

Enumerator
DASHER_BS_SWITCH_DEF 
DASHER_BS_SWITCH_OFF 
DASHER_BS_SWITCH_ON 
DASHER_BS_SWITCH_INBAND 
DASHER_BS_SWITCH_INBAND_PPS 
DASHER_BS_SWITCH_BOTH 
DASHER_BS_SWITCH_FORCE 
DASHER_BS_SWITCH_MULTI 

◆ DasherUTCTimingType

Enumerator
DASHER_UTCREF_NONE 
DASHER_UTCREF_NTP 
DASHER_UTCREF_HTTP_HEAD 
DASHER_UTCREF_ISO 
DASHER_UTCREF_XSDATE 
DASHER_UTCREF_INBAND 

◆ DasherNTPClockMode_t

Enumerator
DASHER_NTP_REM 
DASHER_NTP_YES 
DASHER_NTP_KEEP 

◆ DasherSAPStrictMode_t

Enumerator
DASHER_SAP_OFF 
DASHER_SAP_SIG 
DASHER_SAP_ON 
DASHER_SAP_INTRA_ONLY 

◆ DasherTSSHandlingMode_t

Enumerator
DASHER_BOUNDS_OUT 
DASHER_BOUNDS_CLOSEST 
DASHER_BOUNDS_IN 

◆ DasherMuxType_t

Enumerator
DASHER_MUX_ISOM 
DASHER_MUX_TS 
DASHER_MUX_MKV 
DASHER_MUX_WEBM 
DASHER_MUX_OGG 
DASHER_MUX_RAW 
DASHER_MUX_AUTO 

◆ DasherAdaptSetGenMode_t

Enumerator
DASHER_MPHA_NO 
DASHER_MPHA_COMP_ONLY 
DASHER_MPHA_ALL 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_FWD_NO 
DASHER_FWD_SEGS 
DASHER_FWD_ALL 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_SYNC_UNKNOWN 
DASHER_SYNC_NONE 
DASHER_SYNC_PRESENT 

◆ DasherCMAFMode_t

Enumerator
DASHER_CMAF_NONE 
DASHER_CMAF_CMFC 
DASHER_CMAF_CMF2 

◆ DasherDefaultKIDInjection_t

Enumerator
DASHER_DEFKID_OFF 
DASHER_DEFKID_ON 
DASHER_DEFKID_AUTO 

◆ DasherPeriodSwitchMode_t

Enumerator
DASHER_PSWITCH_SINGLE 
DASHER_PSWITCH_FORCE 
DASHER_PSWITCH_STSD 

◆ DasherWaitLastPktCtrl_t

Enumerator
DASHER_SEGSYNC_NO 
DASHER_SEGSYNC_YES 
DASHER_SEGSYNC_AUTO 

◆ anonymous enum

anonymous enum
Enumerator
IDXMODE_NONE 
IDXMODE_ALL 
IDXMODE_MANIFEST 
IDXMODE_CHILD 
IDXMODE_INIT 
IDXMODE_SEG 

◆ DasherSegFlushMode_t

Enumerator
SFLUSH_OFF 
SFLUSH_SINGLE 
SFLUSH_END 

◆ anonymous enum

anonymous enum
Enumerator
DASH_INITSEG_PRESENT 
DASH_INITSEG_NONE 
DASH_INITSEG_SKIP 

Function Documentation

◆ gf_filter_pid_get_destination_ex()

char * gf_filter_pid_get_destination_ex ( GF_FilterPid *  pid,
u32  dst_idx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_filter_skip_seg_size_events()

void gf_filter_skip_seg_size_events ( GF_Filter *  f)
+ Here is the caller graph for this function:

◆ gf_filter_pid_force_single_link()

void gf_filter_pid_force_single_link ( GF_FilterPid *  pid)
+ Here is the caller graph for this function:

◆ gf_filter_pid_disable_clone()

void gf_filter_pid_disable_clone ( GF_FilterPid *  pid)
+ Here is the caller graph for this function:

◆ dasher_flush_segment()

static void dasher_flush_segment ( GF_DasherCtx ctx,
GF_DashStream ds,
Bool  is_last_in_period 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_update_rep()

static void dasher_update_rep ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_reset_stream()

static void dasher_reset_stream ( GF_Filter *  filter,
GF_DashStream ds,
Bool  is_destroy 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_update_period_duration()

static void dasher_update_period_duration ( GF_DasherCtx ctx,
Bool  is_period_switch 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_period()

static GF_Err dasher_setup_period ( GF_Filter *  filter,
GF_DasherCtx ctx,
GF_DashStream for_ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_profile()

static GF_Err dasher_setup_profile ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_new_period()

static GF_DasherPeriod * dasher_new_period ( )
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_audio_info_with_m4a_sbr_ps()

static GF_Err dasher_get_audio_info_with_m4a_sbr_ps ( GF_DashStream ds,
const GF_PropertyValue *  dsi,
u32 SampleRate,
u32 Channels 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_ensure_outpath()

static void dasher_ensure_outpath ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_hls_setup_crypto()

static GF_Err dasher_hls_setup_crypto ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_dep_bitrate()

static u32 dasher_get_dep_bitrate ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_update_bitrate()

static void dasher_update_bitrate ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_stream_period_changed()

static GF_Err dasher_stream_period_changed ( GF_Filter *  filter,
GF_DasherCtx ctx,
GF_DashStream ds,
Bool  is_new_period_request 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_dash_dur()

static void dasher_get_dash_dur ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_send_transport_hints()

static void dasher_send_transport_hints ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_template_use_source_url()

static Bool dasher_template_use_source_url ( const char *  template)
static
+ Here is the caller graph for this function:

◆ dasher_merge_prop()

static Bool dasher_merge_prop ( void *  cbk,
u32  prop_4cc,
const char *  prop_name,
const GF_PropertyValue *  src_prop 
)
static
+ Here is the caller graph for this function:

◆ dasher_configure_pid()

static GF_Err dasher_configure_pid ( GF_Filter *  filter,
GF_FilterPid *  pid,
Bool  is_remove 
)
static

GPAC_DISABLE_AV_PARSERS

+ Here is the call graph for this function:

◆ dasher_check_chaining()

static void dasher_check_chaining ( GF_DasherCtx ctx,
char *  scheme_id,
char *  url 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_update_mpd()

static GF_Err dasher_update_mpd ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_mpd()

static GF_Err dasher_setup_mpd ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_rfc_6381_codec_name()

static GF_Err dasher_get_rfc_6381_codec_name ( GF_DasherCtx ctx,
GF_DashStream ds,
char *  szCodec,
Bool  force_inband,
Bool  force_sbr 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_base_ds()

static GF_DashStream * get_base_ds ( GF_DasherCtx ctx,
GF_DashStream for_ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_canon_urn()

static void get_canon_urn ( bin128  URN,
char *  res 
)
static
+ Here is the caller graph for this function:

◆ get_drm_kms_name()

static const char * get_drm_kms_name ( const char *  canURN)
static
+ Here is the caller graph for this function:

◆ dasher_get_content_protection_desc()

static GF_List * dasher_get_content_protection_desc ( GF_DasherCtx ctx,
GF_DashStream ds,
GF_MPD_AdaptationSet for_set 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_mime_and_ext()

static void dasher_get_mime_and_ext ( GF_DasherCtx ctx,
GF_DashStream ds,
const char **  out_subtype,
const char **  out_ext 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_rep()

static void dasher_setup_rep ( GF_DasherCtx ctx,
GF_DashStream ds,
u32 srd_rep_idx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_same_roles()

static Bool dasher_same_roles ( GF_DashStream ds1,
GF_DashStream ds2 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_next_as_id()

static u32 dasher_get_next_as_id ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_same_adaptation_set()

static Bool dasher_same_adaptation_set ( GF_DasherCtx ctx,
GF_DashStream ds,
GF_DashStream ds_test 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_add_descriptors()

static void dasher_add_descriptors ( GF_List **  p_dst_list,
const GF_PropertyValue *  desc_val 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_add_inband_event()

static void dasher_add_inband_event ( GF_DashStream ds)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_set_defaults()

static void dasher_setup_set_defaults ( GF_DasherCtx ctx,
GF_MPD_AdaptationSet set 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rewrite_dep_ids()

static void rewrite_dep_ids ( GF_DasherCtx ctx,
GF_DashStream base_ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_check_bitstream_switching()

static void dasher_check_bitstream_switching ( GF_DasherCtx ctx,
GF_MPD_AdaptationSet set 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_cryptfout_push_key()

GF_Err gf_cryptfout_push_key ( GF_Filter *  filter,
bin128 key,
bin128 IV 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_open_destination()

static void dasher_open_destination ( GF_Filter *  filter,
GF_DasherCtx ctx,
GF_MPD_Representation rep,
const char *  szInitURL,
u32  trash_init 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_gather_deps()

static void dasher_gather_deps ( GF_DasherCtx ctx,
u32  dependency_id,
GF_List *  multi_tracks 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_update_dep_list()

static void dasher_update_dep_list ( GF_DasherCtx ctx,
GF_DashStream ds,
const char *  ref_type 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_inject_scte35_processor()

static void dasher_inject_scte35_processor ( GF_Filter *  filter,
GF_DashStream ds,
char *  szSRC 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_open_pid()

static void dasher_open_pid ( GF_Filter *  filter,
GF_DasherCtx ctx,
GF_DashStream ds,
GF_List *  multi_pids,
Bool  init_trashed 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_set_content_components()

static void dasher_set_content_components ( GF_DashStream ds)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_cat_mpd_url()

static char * dasher_cat_mpd_url ( GF_DasherCtx ctx,
GF_DashStream ds,
const char *  url 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_check_template_reuse()

static u32 dasher_check_template_reuse ( GF_DasherCtx ctx,
GF_DashStream ds,
const char *  tpl 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_check_hls_variant_path()

static Bool dasher_check_hls_variant_path ( GF_DasherCtx ctx,
GF_DashStream ds,
GF_DashStream a_ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_sources()

static void dasher_setup_sources ( GF_Filter *  filter,
GF_DasherCtx ctx,
GF_MPD_AdaptationSet set 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_purge_segment_timeline()

static void dasher_purge_segment_timeline ( GF_DashStream ds,
GF_MPD_SegmentTimeline stl,
GF_DASH_SegmentContext sctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_file_delete()

static void send_file_delete ( GF_DasherCtx ctx,
GF_DashStream ds,
const char *  filename,
const char *  filepath,
s32  part_idx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_purge_segments()

static void dasher_purge_segments ( GF_DasherCtx ctx,
u64 period_dur 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_transfer_file()

static void dasher_transfer_file ( FILE *  f,
GF_FilterPid *  opid,
const char *  name,
GF_DashStream ds,
Bool  is_rel_url 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_utc()

static u64 dasher_get_utc ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_set_and_rep()

static void dasher_get_set_and_rep ( GF_MPD_Period period,
const char *  repid,
GF_MPD_AdaptationSet **  out_set,
GF_MPD_Representation **  out_rep 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_merge_rep()

static Bool dasher_merge_rep ( GF_DashStream ds,
GF_MPD_Representation rep 
)
static
+ Here is the caller graph for this function:

◆ dasher_forward_manifest_raw()

static void dasher_forward_manifest_raw ( GF_DasherCtx ctx,
GF_DashStream ds,
const char *  manifest,
const char *  manifest_name 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_forward_mpd()

static void dasher_forward_mpd ( GF_DasherCtx ctx,
const char *  manifest 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_write_index()

static GF_Err dasher_write_index ( GF_DasherCtx ctx,
GF_FilterPid *  opid 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_write_and_send_manifest()

static GF_Err dasher_write_and_send_manifest ( GF_DasherCtx ctx,
u64  last_period_dur,
Bool  do_m3u8,
Bool  m3u8_second_pass,
GF_FilterPid *  opid,
char *  alt_name 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_update_dyn_bitrates()

static void dasher_update_dyn_bitrates ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_send_manifest()

GF_Err dasher_send_manifest ( GF_Filter *  filter,
GF_DasherCtx ctx,
Bool  for_mpd_only 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_context_update_period_end()

void dasher_context_update_period_end ( GF_DasherCtx ctx)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_context_update_period_start()

void dasher_context_update_period_start ( GF_DasherCtx ctx)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_get_stream()

static GF_DashStream * dasher_get_stream ( GF_DasherCtx ctx,
const char *  src_url,
u32  original_pid,
const char *  original_period_id,
const char *  original_rep_id 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_reload_muxed_comp()

static GF_Err dasher_reload_muxed_comp ( GF_DasherCtx ctx,
GF_DashStream base_ds,
GF_MPD_Representation base_rep_ctx,
Bool  check_only 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_reload_context()

static GF_Err dasher_reload_context ( GF_Filter *  filter,
GF_DasherCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_udpate_periods_and_manifest()

static void dasher_udpate_periods_and_manifest ( GF_Filter *  filter,
GF_DasherCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_period_count()

static u32 dasher_period_count ( GF_List *  streams_in)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_init_utc()

static void dasher_init_utc ( GF_Filter *  filter,
GF_DasherCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_switch_period()

static GF_Err dasher_switch_period ( GF_Filter *  filter,
GF_DasherCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_setup_ssr()

static GF_Err dasher_setup_ssr ( GF_DasherCtx ctx)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_insert_timeline_entry()

static void dasher_insert_timeline_entry ( GF_DasherCtx ctx,
GF_DashStream ds,
Bool  is_ll_anouncement 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_copy_segment_timelines()

static void dasher_copy_segment_timelines ( GF_DasherCtx ctx,
GF_MPD_AdaptationSet set 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_set_timeline_parts()

static void dasher_set_timeline_parts ( GF_DasherCtx ctx,
GF_DashStream ds,
GF_DASH_SegmentContext sctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_strip_base()

static char * dasher_strip_base ( GF_DasherCtx ctx,
GF_DashStream ds,
char *  seg_url,
char *  seg_name 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_translate_cts()

static GFINLINE u64 dasher_translate_cts ( GF_DashStream ds,
u64  cts 
)
static
+ Here is the caller graph for this function:

◆ dasher_mark_segment_start()

static void dasher_mark_segment_start ( GF_DasherCtx ctx,
GF_DashStream ds,
GF_FilterPacket *  pck,
GF_FilterPacket *  in_pck 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_check_loop()

static Bool dasher_check_loop ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_check_period_ready()

static Bool dasher_check_period_ready ( GF_DasherCtx ctx,
Bool  is_session_end 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_format_report()

void dasher_format_report ( GF_Filter *  filter,
GF_DasherCtx ctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_drop_input()

static void dasher_drop_input ( GF_DasherCtx ctx,
GF_DashStream ds,
Bool  discard_all 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_inject_eods()

static void dasher_inject_eods ( GF_DasherCtx ctx,
GF_DashStream ds,
Bool  forced 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_send_empty_segment()

static void dasher_send_empty_segment ( GF_DasherCtx ctx,
GF_DashStream ds 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_process()

static GF_Err dasher_process ( GF_Filter *  filter)
static
+ Here is the call graph for this function:

◆ dasher_resume_subdur()

static void dasher_resume_subdur ( GF_Filter *  filter,
GF_DasherCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_process_hls_ll()

static void dasher_process_hls_ll ( GF_DasherCtx ctx,
const GF_FilterEvent *  evt 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dasher_process_event()

static Bool dasher_process_event ( GF_Filter *  filter,
const GF_FilterEvent *  evt 
)
static
+ Here is the call graph for this function:

◆ dasher_initialize()

static GF_Err dasher_initialize ( GF_Filter *  filter)
static
+ Here is the call graph for this function:

◆ dasher_finalize()

static void dasher_finalize ( GF_Filter *  filter)
static
+ Here is the call graph for this function:

◆ dasher_register()

const GF_FilterRegister * dasher_register ( GF_FilterSession *  session)

Variable Documentation

◆ empty_ttml

const char* empty_ttml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tt xmlns=\"http://www.w3.org/ns/ttml\" xml:lang=\"en\">\n<head/>\n<body/>\n</tt>"
static

◆ DasherCaps

const GF_FilterCapability DasherCaps[]
static

◆ DasherArgs

const GF_FilterArgs DasherArgs[]
static

◆ DasherRegister

GF_FilterRegister DasherRegister