libgpac
Documentation of the core library of GPAC
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)
 

Enumerations

enum  {
  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  { DASHER_NTP_REM =0 , DASHER_NTP_YES , DASHER_NTP_KEEP }
 
enum  { DASHER_SAP_OFF =0 , DASHER_SAP_SIG , DASHER_SAP_ON , DASHER_SAP_INTRA_ONLY }
 
enum  { DASHER_BOUNDS_OUT =0 , DASHER_BOUNDS_CLOSEST , DASHER_BOUNDS_IN }
 
enum  {
  DASHER_MUX_ISOM =0 , DASHER_MUX_TS , DASHER_MUX_MKV , DASHER_MUX_WEBM ,
  DASHER_MUX_OGG , DASHER_MUX_RAW , DASHER_MUX_AUTO
}
 
enum  { 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  { DASHER_CMAF_NONE =0 , DASHER_CMAF_CMFC , DASHER_CMAF_CMF2 }
 
enum  { DASHER_DEFKID_OFF =0 , DASHER_DEFKID_ON , DASHER_DEFKID_AUTO }
 
enum  { DASHER_PSWITCH_SINGLE =0 , DASHER_PSWITCH_FORCE , DASHER_PSWITCH_STSD }
 
enum  { 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  { SFLUSH_OFF =0 , SFLUSH_SINGLE , SFLUSH_END }
 
enum  DasherHDRType { DASHER_HDR_NONE =0 , DASHER_HDR_PQ10 , DASHER_HDR_HLG }
 
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_encode_hints (GF_DasherCtx *ctx, GF_DashStream *ds)
 
static Bool dasher_template_use_source_url (const char *template)
 
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 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
u32 bs_switch
u32 profile
u32 spd
u32 cp
u32 ntp
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
u32 mha_compat
u32 sflush
u32 strict_sap
u32 pssh
u32 cmaf
u32 dkid
GF_Fraction segdur
u32 dmode
char * template
char * segext
char * initext
u32 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 sreg
Bool ttml_agg
char * styp
Bool sigfrag
u32 sbound
u32 pswitch
char * utcs
char * mname
char * hlsdrm
char * ckurl
GF_PropStringList hlsx
u32 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
u32 hls_absu
u32 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 check_connections
s32 update_report
Bool purge_segments
Bool is_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
DasherHDRType hdr_type
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
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
u32 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:6188
@ 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:196

◆ 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)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
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 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_NTP_REM 
DASHER_NTP_YES 
DASHER_NTP_KEEP 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_SAP_OFF 
DASHER_SAP_SIG 
DASHER_SAP_ON 
DASHER_SAP_INTRA_ONLY 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_BOUNDS_OUT 
DASHER_BOUNDS_CLOSEST 
DASHER_BOUNDS_IN 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_MUX_ISOM 
DASHER_MUX_TS 
DASHER_MUX_MKV 
DASHER_MUX_WEBM 
DASHER_MUX_OGG 
DASHER_MUX_RAW 
DASHER_MUX_AUTO 

◆ anonymous enum

anonymous enum
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 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_CMAF_NONE 
DASHER_CMAF_CMFC 
DASHER_CMAF_CMF2 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_DEFKID_OFF 
DASHER_DEFKID_ON 
DASHER_DEFKID_AUTO 

◆ anonymous enum

anonymous enum
Enumerator
DASHER_PSWITCH_SINGLE 
DASHER_PSWITCH_FORCE 
DASHER_PSWITCH_STSD 

◆ anonymous enum

anonymous enum
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 

◆ anonymous enum

anonymous enum
Enumerator
SFLUSH_OFF 
SFLUSH_SINGLE 
SFLUSH_END 

◆ DasherHDRType

Enumerator
DASHER_HDR_NONE 
DASHER_HDR_PQ10 
DASHER_HDR_HLG 

◆ 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_encode_hints()

static void dasher_send_encode_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_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:

◆ 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