libgpac
Documentation of the core library of GPAC
mpd.c File Reference
#include <gpac/mpd.h>
#include <gpac/download.h>
#include <gpac/internal/m3u8.h>
#include <gpac/network.h>
#include <gpac/maths.h>
#include <gpac/iso639.h>
+ Include dependency graph for mpd.c:

Macros

#define MPD_STORE_EXTENSION_ATTR(_elem)
 
#define MPD_STORE_EXTENSION_NODE(_elem)
 
#define MPD_FREE_EXTENSION_NODE(_elem)
 
#define ISBMFFI_ADD_KEYWORD(_name, _value)
 
#define ISBMFFI_ADD_KEYWORD_CONST(_name, _value)
 
#define EXTRACT_FORMAT(_nb_chars)
 

Functions

static Bool gf_mpd_parse_bool (const char *const attr)
 
static char * gf_mpd_parse_string (char *attr)
 
static Bool gf_mpd_valid_child (GF_MPD *mpd, GF_XMLNode *child)
 
static char * gf_mpd_parse_text_content (GF_XMLNode *child)
 
static u32 gf_mpd_parse_int (const char *const attr)
 
static u64 gf_mpd_parse_long_int (const char *const attr)
 
static Double gf_mpd_parse_double (const char *const attr)
 
static GF_MPD_Fractionalgf_mpd_parse_frac (const char *const attr, const char sep, GF_MPD_Fractional *res)
 
static GF_Fraction gf_mpd_parse_fraction (const char *const attr)
 
u64 gf_mpd_parse_date (const char *const attr)
 
static u64 gf_mpd_parse_duration (const char *const duration)
 
static u32 gf_mpd_parse_duration_u32 (const char *const duration)
 
static GF_MPD_ByteRangegf_mpd_parse_byte_range (const char *const attr)
 
GF_Err gf_mpd_parse_base_url (GF_List *container, GF_XMLNode *node)
 
static GF_Err gf_mpd_parse_program_info (GF_MPD *mpd, GF_XMLNode *root)
 
static GF_MPD_URLgf_mpd_parse_url (GF_XMLNode *root)
 
static void gf_mpd_parse_segment_base_generic (GF_MPD *mpd, GF_MPD_SegmentBase *seg, GF_XMLNode *root)
 
static GF_MPD_SegmentTimelinegf_mpd_parse_segment_timeline (GF_MPD *mpd, GF_XMLNode *root)
 
static GF_MPD_SegmentBasegf_mpd_parse_segment_base (GF_MPD *mpd, GF_XMLNode *root)
 
void gf_mpd_parse_multiple_segment_base (GF_MPD *mpd, GF_MPD_MultipleSegmentBase *seg, GF_XMLNode *root)
 
void gf_mpd_parse_segment_url (GF_List *container, GF_XMLNode *root)
 
static GF_MPD_SegmentListgf_mpd_parse_segment_list (GF_MPD *mpd, GF_XMLNode *root)
 
static GF_MPD_SegmentTemplategf_mpd_parse_segment_template (GF_MPD *mpd, GF_XMLNode *root)
 
static GF_Err gf_mpd_parse_content_component (GF_List *comps, GF_XMLNode *root)
 
static GF_Err gf_mpd_parse_inband_event (GF_List *comps, GF_XMLNode *root)
 
static GF_Err gf_mpd_parse_descriptor_ex (GF_List *container, GF_MPD_Descriptor **out_ptr, GF_XMLNode *root)
 
static GF_Err gf_mpd_parse_descriptor (GF_List *container, GF_XMLNode *root)
 
GF_MPD_ProducerReferenceTimegf_mpd_parse_produce_ref_time (GF_XMLNode *root)
 
static void gf_mpd_parse_common_representation_attr (GF_MPD *mpd, GF_MPD_CommonAttributes *com, GF_XMLNode *root, GF_XMLAttribute *att, u32 *index)
 
static void gf_mpd_parse_common_representation_child (GF_MPD *mpd, GF_MPD_CommonAttributes *com, GF_XMLNode *root, GF_XMLNode *child, u32 *index, u32 child_idx)
 
static void gf_mpd_init_common_attributes (GF_MPD_CommonAttributes *com)
 
GF_MPD_Representationgf_mpd_representation_new ()
 
static GF_DASH_SegmenterContextgf_mpd_parse_dasher_context (GF_MPD *mpd, GF_XMLNode *root)
 
static GF_List * gf_mpd_parse_segments_context (GF_MPD *mpd, GF_XMLNode *root)
 
static GF_Err gf_mpd_parse_representation (GF_MPD *mpd, GF_List *container, GF_XMLNode *root)
 
GF_MPD_AdaptationSetgf_mpd_adaptation_set_new ()
 
static GF_Err gf_mpd_parse_adaptation_set (GF_MPD *mpd, GF_List *container, GF_XMLNode *root)
 
GF_MPD_Periodgf_mpd_period_new ()
 
GF_Err gf_mpd_parse_period (GF_MPD *mpd, GF_XMLNode *root)
 
GF_EXPORT GF_MPDgf_mpd_new ()
 
void gf_mpd_del_list (GF_List *list, void(*__destructor)(void *), Bool reset_only)
 
void gf_mpd_base_url_free (void *_item)
 
void gf_mpd_url_free (void *_item)
 
void gf_mpd_string_free (void *_item)
 
void gf_mpd_prog_info_free (void *_item)
 
void gf_mpd_segment_url_free (void *_ptr)
 
void gf_mpd_segment_base_free (void *_item)
 
void gf_mpd_segment_entry_free (void *_item)
 
void gf_mpd_segment_timeline_free (void *_item)
 
void gf_mpd_segment_list_free (void *_item)
 
void gf_mpd_segment_template_free (void *_item)
 
GF_MPD_Descriptorgf_mpd_descriptor_new (const char *id, const char *schemeIdUri, const char *value)
 
void gf_mpd_descriptor_free (void *item)
 
void gf_mpd_content_component_free (void *item)
 
void gf_mpd_inband_event_free (void *item)
 
void gf_mpd_producer_reftime_free (void *item)
 
void gf_mpd_common_attributes_free (GF_MPD_CommonAttributes *ptr)
 
void gf_mpd_representation_free (void *_item)
 
void gf_mpd_adaptation_set_free (void *_item)
 
void gf_mpd_period_free (void *_item)
 
GF_EXPORT void gf_mpd_del (GF_MPD *mpd)
 
GF_EXPORT GF_Err gf_mpd_complete_from_dom (GF_XMLNode *root, GF_MPD *mpd, const char *default_base_url)
 
static void gf_mpd_init_struct (GF_MPD *mpd)
 
GF_EXPORT GF_Err gf_mpd_init_from_dom (GF_XMLNode *root, GF_MPD *mpd, const char *default_base_url)
 
static char * group_to_codecs (MasterPlaylist *pl, PlaylistElement *pe, u32 *bandwidth)
 
static GF_Err gf_m3u8_fill_mpd_struct (MasterPlaylist *pl, const char *m3u8_file, const char *src_base_url, const char *mpd_file, char *title, Double update_interval, char *mimeTypeForM3U8Segments, Bool do_import, Bool use_mpd_templates, Bool use_segment_timeline, Bool is_end, u32 max_dur, GF_MPD *mpd, Bool parse_sub_playlist)
 
GF_EXPORT GF_Err gf_m3u8_to_mpd (const char *m3u8_file, const char *base_url, const char *mpd_file, u32 reload_count, char *mimeTypeForM3U8Segments, Bool do_import, Bool use_mpd_templates, Bool use_segment_timeline, GF_FileDownload *getter, GF_MPD *mpd, Bool parse_sub_playlist, Bool keep_files)
 
GF_EXPORT GF_Err gf_m3u8_solve_representation_xlink (GF_MPD_Representation *rep, const char *base_url, GF_FileDownload *getter, Bool *is_static, u64 *duration, u8 last_sig[GF_SHA1_DIGEST_SIZE])
 
GF_EXPORT GF_MPD_SegmentListgf_mpd_solve_segment_list_xlink (GF_MPD *mpd, GF_XMLNode *root)
 
GF_EXPORT void gf_mpd_delete_segment_list (GF_MPD_SegmentList *segment_list)
 
static GFINLINE void gf_mpd_lf (FILE *out, s32 indent)
 
static GFINLINE void gf_mpd_nl (FILE *out, s32 indent)
 
void gf_mpd_print_date (FILE *out, char *name, u64 time)
 
void gf_mpd_print_duration (FILE *out, char *name, u64 duration_in_ms, Bool UseHoursAndMinutes)
 
static void gf_mpd_print_base_url (FILE *out, GF_MPD_BaseURL *base_URL, s32 indent)
 
static void gf_mpd_print_base_urls (FILE *out, GF_List *base_URLs, s32 indent)
 
static void gf_mpd_print_url (FILE *out, GF_MPD_URL *url, char *name, s32 indent)
 
static void gf_mpd_print_segment_base_attr (FILE *out, GF_MPD_SegmentBase *s)
 
static void gf_mpd_print_segment_base (FILE *out, GF_MPD_SegmentBase *s, s32 indent)
 
static void gf_mpd_print_segment_timeline (FILE *out, GF_MPD_SegmentTimeline *tl, s32 indent, u32 tsb_first_entry)
 
GF_MPD_SegmentTimelinegf_mpd_segmentimeline_new (void)
 
static u32 gf_mpd_print_multiple_segment_base (FILE *out, GF_MPD_MultipleSegmentBase *ms, s32 indent, Bool close_if_no_child)
 
static void gf_mpd_print_segment_list (FILE *out, GF_MPD_SegmentList *s, s32 indent)
 
static void gf_mpd_print_segment_template (FILE *out, GF_MPD_SegmentTemplate *s, s32 indent)
 
static void gf_mpd_extensible_print_attr (FILE *out, GF_List *attributes)
 
static void gf_mpd_extensible_print_nodes (FILE *out, GF_List *children, s32 indent, u32 *child_idx, Bool is_final)
 
static void gf_mpd_print_desc (FILE *out, GF_MPD_Descriptor *desc, char *desc_name, s32 indent)
 
static void gf_mpd_print_descriptors (FILE *out, GF_List *desc_list, char *desc_name, s32 indent, GF_List *x_children, u32 *child_idx)
 
static void mpd_print_lang (FILE *out, const char *attVal, const char *attName)
 
static void gf_mpd_print_content_component (FILE *out, GF_List *content_component, s32 indent)
 
static void gf_mpd_print_inband_event (FILE *out, GF_List *inband_event, s32 indent)
 
static void gf_mpd_print_common_attributes (FILE *out, GF_MPD_CommonAttributes *ca)
 
static u32 gf_mpd_print_common_children (FILE *out, GF_MPD_CommonAttributes *ca, s32 indent, u32 *child_idx)
 
static void gf_mpd_print_dasher_context (FILE *out, GF_DASH_SegmenterContext *dasher, s32 indent)
 
static void gf_mpd_print_dasher_segments (FILE *out, GF_List *segments, s32 indent)
 
static void gf_mpd_print_representation (GF_MPD_Representation *rep, FILE *out, Bool write_context, s32 indent, u32 alt_mha_profile, Bool skip_mime)
 
static void gf_mpd_print_adaptation_set (GF_MPD_AdaptationSet *as, FILE *out, Bool write_context, s32 indent, u32 alt_mha_profile)
 
static void gf_mpd_print_period (GF_MPD_Period const *const period, Bool is_dynamic, FILE *out, Bool write_context, s32 indent)
 
static GF_Err mpd_write_generation_comment (GF_MPD const *const mpd, FILE *out)
 
static void gf_mpd_write_m3u8_playlist_tags_entry (FILE *out, const GF_MPD_Representation *rep, char *m3u8_name, const char *codec_ext, const char *g_type, const char *g_id_pref, const char *g2_type, const char *g2_id_pref, const GF_MPD_AdaptationSet *set, u32 max_alt_bandwidth, u32 max_alt_width, u32 max_alt_height, Double max_alt_fps, u32 hls_version)
 
static void gf_mpd_write_m3u8_playlist_tags (const GF_MPD_AdaptationSet *as, u32 as_idx, const GF_MPD_Representation *rep, FILE *out, char *m3u8_name, GF_MPD_Period *period, u32 nb_alt_media, u32 nb_subs, u32 nb_cc, const char *forced_inf_ids, u32 hls_version)
 
static const char * gf_mpd_m3u8_get_init_seg (const GF_MPD_Period *period, const GF_MPD_AdaptationSet *as, const GF_MPD_Representation *rep)
 
static void hls_insert_crypt_info (FILE *out, GF_MPD_Representation *rep, GF_DASH_SegmentContext *sctx, const char **last_kms)
 
static GF_Err gf_mpd_write_m3u8_playlist (const GF_MPD *mpd, const GF_MPD_Period *period, const GF_MPD_AdaptationSet *as, GF_MPD_Representation *rep, char *m3u8_name, u32 hls_version, Double max_part_dur_session, const char *force_base_url)
 
GF_Err gf_mpd_write_m3u8_master_playlist (GF_MPD const *const mpd, FILE *out, const char *m3u8_name, GF_MPD_Period *period, GF_M3U8WriteMode mode)
 
GF_Err gf_mpd_write (GF_MPD const *const mpd, FILE *out, Bool compact)
 
GF_EXPORT GF_Err gf_mpd_write_file (GF_MPD const *const mpd, const char *file_name)
 
GF_EXPORT u32 gf_mpd_get_base_url_count (GF_MPD *mpd, GF_MPD_Period *period, GF_MPD_AdaptationSet *set, GF_MPD_Representation *rep)
 
static char * gf_mpd_get_base_url (GF_List *baseURLs, char *parent_url, u32 *base_url_index)
 
GF_EXPORT GF_Err gf_mpd_resolve_url (GF_MPD *mpd, GF_MPD_Representation *rep, GF_MPD_AdaptationSet *set, GF_MPD_Period *period, const char *mpd_url, u32 base_url_index, GF_MPD_URLResolveType resolve_type, u32 item_index, u32 nb_segments_removed, char **out_url, u64 *out_range_start, u64 *out_range_end, u64 *segment_duration_in_ms, Bool *is_in_base_url, char **out_key_url, bin128 *out_key_iv, u32 *out_start_number, s32 subseg_index)
 
GF_EXPORT Double gf_mpd_get_duration (GF_MPD *mpd)
 
GF_EXPORT void gf_mpd_resolve_segment_duration (GF_MPD_Representation *rep, GF_MPD_AdaptationSet *set, GF_MPD_Period *period, u64 *out_duration, u32 *out_timescale, u64 *out_pts_offset, GF_MPD_SegmentTimeline **out_segment_timeline)
 
static u64 gf_mpd_segment_timeline_start (GF_MPD_SegmentTimeline *timeline, u32 segment_index, u64 *segment_duration)
 
GF_EXPORT GF_Err gf_mpd_get_segment_start_time_with_timescale (s32 in_segment_index, GF_MPD_Period const *const period, GF_MPD_AdaptationSet const *const set, GF_MPD_Representation const *const rep, u64 *out_segment_start_time, u64 *out_opt_segment_duration, u32 *out_opt_scale)
 
GF_EXPORT GF_Err gf_mpd_seek_in_period (Double seek_time, MPDSeekMode seek_mode, GF_MPD_Period const *const in_period, GF_MPD_AdaptationSet const *const in_set, GF_MPD_Representation const *const in_rep, u32 *out_segment_index, Double *out_opt_seek_time, Double *out_seg_dur)
 
static GF_Err smooth_parse_chunk (GF_MPD *mpd, GF_List *container, GF_XMLNode *root)
 
static GF_Err smooth_replace_string (char *src_str, char *str_match, char *str_replace, char **output)
 
static GF_Err smooth_parse_quality_level (GF_MPD *mpd, GF_List *container, GF_XMLNode *root, u32 timescale)
 
static GF_Err smooth_parse_stream_index (GF_MPD *mpd, GF_List *container, GF_XMLNode *root, u32 timescale)
 
GF_EXPORT GF_Err gf_mpd_init_smooth_from_dom (GF_XMLNode *root, GF_MPD *mpd, const char *default_base_url)
 
GF_EXPORT GF_Err gf_mpd_smooth_to_mpd (char *smooth_file, GF_MPD *mpd, const char *default_base_url)
 
GF_EXPORT GF_Err gf_media_mpd_format_segment_name (GF_DashTemplateSegmentType seg_type, Bool is_bs_switching, char *segment_name, const char *rep_id, const char *base_url, const char *seg_rad_name, const char *seg_ext, u64 start_time, u32 bandwidth, u32 segment_number, Bool use_segment_timeline, Bool forced)
 
GF_Err gf_mpd_load_cues (const char *cues_file, u32 stream_id, u32 *cues_timescale, Bool *use_edit_list, s32 *ts_offset, GF_DASHCueInfo **out_cues, u32 *nb_cues)
 
GF_Err gf_mpd_split_adaptation_sets (GF_MPD *mpd)
 
GF_MPD_Descriptorgf_mpd_get_descriptor (GF_List *desclist, char *scheme_id)
 
char * gf_mpd_resolve_subnumber (char *llhas_template, char *segment_filename, u32 part_idx)
 

Macro Definition Documentation

◆ MPD_STORE_EXTENSION_ATTR

#define MPD_STORE_EXTENSION_ATTR (   _elem)
Value:
if (!_elem->x_attributes) _elem->x_attributes = gf_list_new(); \
i--; \
gf_list_rem(root->attributes, i); \
gf_list_add(_elem->x_attributes, att); \
GF_List * gf_list_new()
list constructor
Definition: list.c:608

◆ MPD_STORE_EXTENSION_NODE

#define MPD_STORE_EXTENSION_NODE (   _elem)
Value:
if (!_elem->x_children) _elem->x_children = gf_list_new(); \
i--; \
gf_list_rem(root->content, i); \
child->orig_pos = child_idx;\
gf_list_add(_elem->x_children, child); \

◆ MPD_FREE_EXTENSION_NODE

#define MPD_FREE_EXTENSION_NODE (   _elem)
Value:
if (_elem->x_attributes) {\
while (gf_list_count(_elem->x_attributes)) {\
GF_XMLAttribute *att = gf_list_pop_back(_elem->x_attributes);\
if (att->name) gf_free(att->name);\
if (att->value) gf_free(att->value);\
gf_free(att);\
}\
gf_list_del(_elem->x_attributes);\
}\
if (_elem->x_children) {\
while (gf_list_count(_elem->x_children)) {\
GF_XMLNode *child = gf_list_pop_back(_elem->x_children);\
gf_xml_dom_node_del(child);\
}\
gf_list_del(_elem->x_children);\
}\
void * gf_list_pop_back(GF_List *ptr)
Pop the last element in the list.
Definition: list.c:858
u32 gf_list_count(const GF_List *ptr)
get count
Definition: list.c:661
void gf_list_del(GF_List *ptr)
list destructor
Definition: list.c:633
void gf_free(void *ptr)
Definition: alloc.c:163

◆ ISBMFFI_ADD_KEYWORD

#define ISBMFFI_ADD_KEYWORD (   _name,
  _value 
)
Value:
if (_value != NULL) {\
gf_dynstrcat(&szISOBMFFInit, _name, NULL);\
gf_dynstrcat(&szISOBMFFInit, "=", NULL);\
gf_dynstrcat(&szISOBMFFInit, _value, NULL);\
gf_dynstrcat(&szISOBMFFInit, " ", NULL);\
}

◆ ISBMFFI_ADD_KEYWORD_CONST

#define ISBMFFI_ADD_KEYWORD_CONST (   _name,
  _value 
)
Value:
gf_dynstrcat(&szISOBMFFInit, _name, NULL);\
gf_dynstrcat(&szISOBMFFInit, "=", NULL);\
gf_dynstrcat(&szISOBMFFInit, _value, NULL);\
gf_dynstrcat(&szISOBMFFInit, " ", NULL);\
GF_Err gf_dynstrcat(char **str, const char *to_append, const char *sep)
dynamic string concatenation
Definition: error.c:2205

◆ EXTRACT_FORMAT

#define EXTRACT_FORMAT (   _nb_chars)
Value:
strcpy(szFmt, "%d"); \
char_template+=_nb_chars; \
if (seg_rad_name[char_template]=='%') { \
char *sep = strchr(seg_rad_name+char_template, '$'); \
if (sep) { \
sep[0] = 0; \
strcpy(szFmt, seg_rad_name+char_template); \
char_template += (u32) strlen(seg_rad_name+char_template); \
sep[0] = '$'; \
} \
} \
char_template+=1; \
uint32_t u32
Definition: setup.h:326

Function Documentation

◆ gf_mpd_parse_bool()

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

◆ gf_mpd_parse_string()

static char* gf_mpd_parse_string ( char *  attr)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_valid_child()

static Bool gf_mpd_valid_child ( GF_MPD mpd,
GF_XMLNode child 
)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_text_content()

static char* gf_mpd_parse_text_content ( GF_XMLNode child)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_int()

static u32 gf_mpd_parse_int ( const char *const  attr)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_long_int()

static u64 gf_mpd_parse_long_int ( const char *const  attr)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_double()

static Double gf_mpd_parse_double ( const char *const  attr)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_frac()

static GF_MPD_Fractional* gf_mpd_parse_frac ( const char *const  attr,
const char  sep,
GF_MPD_Fractional res 
)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_fraction()

static GF_Fraction gf_mpd_parse_fraction ( const char *const  attr)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_duration()

static u64 gf_mpd_parse_duration ( const char *const  duration)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_duration_u32()

static u32 gf_mpd_parse_duration_u32 ( const char *const  duration)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_byte_range()

static GF_MPD_ByteRange* gf_mpd_parse_byte_range ( const char *const  attr)
static
+ Here is the caller graph for this function:

◆ gf_mpd_parse_base_url()

GF_Err gf_mpd_parse_base_url ( GF_List *  container,
GF_XMLNode node 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_program_info()

static GF_Err gf_mpd_parse_program_info ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_url()

static GF_MPD_URL* gf_mpd_parse_url ( GF_XMLNode root)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_segment_base_generic()

static void gf_mpd_parse_segment_base_generic ( GF_MPD mpd,
GF_MPD_SegmentBase seg,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_segment_timeline()

static GF_MPD_SegmentTimeline* gf_mpd_parse_segment_timeline ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_segment_base()

static GF_MPD_SegmentBase* gf_mpd_parse_segment_base ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_multiple_segment_base()

void gf_mpd_parse_multiple_segment_base ( GF_MPD mpd,
GF_MPD_MultipleSegmentBase seg,
GF_XMLNode root 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_segment_list()

static GF_MPD_SegmentList* gf_mpd_parse_segment_list ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_segment_template()

static GF_MPD_SegmentTemplate* gf_mpd_parse_segment_template ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_content_component()

static GF_Err gf_mpd_parse_content_component ( GF_List *  comps,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_inband_event()

static GF_Err gf_mpd_parse_inband_event ( GF_List *  comps,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_descriptor_ex()

static GF_Err gf_mpd_parse_descriptor_ex ( GF_List *  container,
GF_MPD_Descriptor **  out_ptr,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_descriptor()

static GF_Err gf_mpd_parse_descriptor ( GF_List *  container,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_produce_ref_time()

GF_MPD_ProducerReferenceTime* gf_mpd_parse_produce_ref_time ( GF_XMLNode root)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_common_representation_attr()

static void gf_mpd_parse_common_representation_attr ( GF_MPD mpd,
GF_MPD_CommonAttributes com,
GF_XMLNode root,
GF_XMLAttribute att,
u32 index 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_common_representation_child()

static void gf_mpd_parse_common_representation_child ( GF_MPD mpd,
GF_MPD_CommonAttributes com,
GF_XMLNode root,
GF_XMLNode child,
u32 index,
u32  child_idx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_init_common_attributes()

static void gf_mpd_init_common_attributes ( GF_MPD_CommonAttributes com)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_dasher_context()

static GF_DASH_SegmenterContext* gf_mpd_parse_dasher_context ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_segments_context()

static GF_List* gf_mpd_parse_segments_context ( GF_MPD mpd,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_representation()

static GF_Err gf_mpd_parse_representation ( GF_MPD mpd,
GF_List *  container,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_parse_adaptation_set()

static GF_Err gf_mpd_parse_adaptation_set ( GF_MPD mpd,
GF_List *  container,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_string_free()

void gf_mpd_string_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_prog_info_free()

void gf_mpd_prog_info_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_segment_entry_free()

void gf_mpd_segment_entry_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_segment_timeline_free()

void gf_mpd_segment_timeline_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_segment_list_free()

void gf_mpd_segment_list_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_segment_template_free()

void gf_mpd_segment_template_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_content_component_free()

void gf_mpd_content_component_free ( void *  item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_inband_event_free()

void gf_mpd_inband_event_free ( void *  item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_producer_reftime_free()

void gf_mpd_producer_reftime_free ( void *  item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_common_attributes_free()

void gf_mpd_common_attributes_free ( GF_MPD_CommonAttributes ptr)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_adaptation_set_free()

void gf_mpd_adaptation_set_free ( void *  _item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_init_struct()

static void gf_mpd_init_struct ( GF_MPD mpd)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ group_to_codecs()

static char* group_to_codecs ( MasterPlaylist *  pl,
PlaylistElement *  pe,
u32 bandwidth 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_m3u8_fill_mpd_struct()

static GF_Err gf_m3u8_fill_mpd_struct ( MasterPlaylist *  pl,
const char *  m3u8_file,
const char *  src_base_url,
const char *  mpd_file,
char *  title,
Double  update_interval,
char *  mimeTypeForM3U8Segments,
Bool  do_import,
Bool  use_mpd_templates,
Bool  use_segment_timeline,
Bool  is_end,
u32  max_dur,
GF_MPD mpd,
Bool  parse_sub_playlist 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_lf()

static GFINLINE void gf_mpd_lf ( FILE *  out,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_nl()

static GFINLINE void gf_mpd_nl ( FILE *  out,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_date()

void gf_mpd_print_date ( FILE *  out,
char *  name,
u64  time 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_duration()

void gf_mpd_print_duration ( FILE *  out,
char *  name,
u64  duration_in_ms,
Bool  UseHoursAndMinutes 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_base_url()

static void gf_mpd_print_base_url ( FILE *  out,
GF_MPD_BaseURL base_URL,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_base_urls()

static void gf_mpd_print_base_urls ( FILE *  out,
GF_List *  base_URLs,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_url()

static void gf_mpd_print_url ( FILE *  out,
GF_MPD_URL url,
char *  name,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_segment_base_attr()

static void gf_mpd_print_segment_base_attr ( FILE *  out,
GF_MPD_SegmentBase s 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_segment_base()

static void gf_mpd_print_segment_base ( FILE *  out,
GF_MPD_SegmentBase s,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_segment_timeline()

static void gf_mpd_print_segment_timeline ( FILE *  out,
GF_MPD_SegmentTimeline tl,
s32  indent,
u32  tsb_first_entry 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_multiple_segment_base()

static u32 gf_mpd_print_multiple_segment_base ( FILE *  out,
GF_MPD_MultipleSegmentBase ms,
s32  indent,
Bool  close_if_no_child 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_segment_list()

static void gf_mpd_print_segment_list ( FILE *  out,
GF_MPD_SegmentList s,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_segment_template()

static void gf_mpd_print_segment_template ( FILE *  out,
GF_MPD_SegmentTemplate s,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_extensible_print_attr()

static void gf_mpd_extensible_print_attr ( FILE *  out,
GF_List *  attributes 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_extensible_print_nodes()

static void gf_mpd_extensible_print_nodes ( FILE *  out,
GF_List *  children,
s32  indent,
u32 child_idx,
Bool  is_final 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_desc()

static void gf_mpd_print_desc ( FILE *  out,
GF_MPD_Descriptor desc,
char *  desc_name,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_descriptors()

static void gf_mpd_print_descriptors ( FILE *  out,
GF_List *  desc_list,
char *  desc_name,
s32  indent,
GF_List *  x_children,
u32 child_idx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mpd_print_lang()

static void mpd_print_lang ( FILE *  out,
const char *  attVal,
const char *  attName 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_content_component()

static void gf_mpd_print_content_component ( FILE *  out,
GF_List *  content_component,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_inband_event()

static void gf_mpd_print_inband_event ( FILE *  out,
GF_List *  inband_event,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_common_attributes()

static void gf_mpd_print_common_attributes ( FILE *  out,
GF_MPD_CommonAttributes ca 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_common_children()

static u32 gf_mpd_print_common_children ( FILE *  out,
GF_MPD_CommonAttributes ca,
s32  indent,
u32 child_idx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_dasher_context()

static void gf_mpd_print_dasher_context ( FILE *  out,
GF_DASH_SegmenterContext dasher,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_dasher_segments()

static void gf_mpd_print_dasher_segments ( FILE *  out,
GF_List *  segments,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_representation()

static void gf_mpd_print_representation ( GF_MPD_Representation rep,
FILE *  out,
Bool  write_context,
s32  indent,
u32  alt_mha_profile,
Bool  skip_mime 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_adaptation_set()

static void gf_mpd_print_adaptation_set ( GF_MPD_AdaptationSet as,
FILE *  out,
Bool  write_context,
s32  indent,
u32  alt_mha_profile 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_print_period()

static void gf_mpd_print_period ( GF_MPD_Period const *const  period,
Bool  is_dynamic,
FILE *  out,
Bool  write_context,
s32  indent 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mpd_write_generation_comment()

static GF_Err mpd_write_generation_comment ( GF_MPD const *const  mpd,
FILE *  out 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_write_m3u8_playlist_tags_entry()

static void gf_mpd_write_m3u8_playlist_tags_entry ( FILE *  out,
const GF_MPD_Representation rep,
char *  m3u8_name,
const char *  codec_ext,
const char *  g_type,
const char *  g_id_pref,
const char *  g2_type,
const char *  g2_id_pref,
const GF_MPD_AdaptationSet set,
u32  max_alt_bandwidth,
u32  max_alt_width,
u32  max_alt_height,
Double  max_alt_fps,
u32  hls_version 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_write_m3u8_playlist_tags()

static void gf_mpd_write_m3u8_playlist_tags ( const GF_MPD_AdaptationSet as,
u32  as_idx,
const GF_MPD_Representation rep,
FILE *  out,
char *  m3u8_name,
GF_MPD_Period period,
u32  nb_alt_media,
u32  nb_subs,
u32  nb_cc,
const char *  forced_inf_ids,
u32  hls_version 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_m3u8_get_init_seg()

static const char* gf_mpd_m3u8_get_init_seg ( const GF_MPD_Period period,
const GF_MPD_AdaptationSet as,
const GF_MPD_Representation rep 
)
static
+ Here is the caller graph for this function:

◆ hls_insert_crypt_info()

static void hls_insert_crypt_info ( FILE *  out,
GF_MPD_Representation rep,
GF_DASH_SegmentContext sctx,
const char **  last_kms 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_write_m3u8_playlist()

static GF_Err gf_mpd_write_m3u8_playlist ( const GF_MPD mpd,
const GF_MPD_Period period,
const GF_MPD_AdaptationSet as,
GF_MPD_Representation rep,
char *  m3u8_name,
u32  hls_version,
Double  max_part_dur_session,
const char *  force_base_url 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_get_base_url()

static char* gf_mpd_get_base_url ( GF_List *  baseURLs,
char *  parent_url,
u32 base_url_index 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_mpd_segment_timeline_start()

static u64 gf_mpd_segment_timeline_start ( GF_MPD_SegmentTimeline timeline,
u32  segment_index,
u64 segment_duration 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ smooth_parse_chunk()

static GF_Err smooth_parse_chunk ( GF_MPD mpd,
GF_List *  container,
GF_XMLNode root 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ smooth_replace_string()

static GF_Err smooth_replace_string ( char *  src_str,
char *  str_match,
char *  str_replace,
char **  output 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ smooth_parse_quality_level()

static GF_Err smooth_parse_quality_level ( GF_MPD mpd,
GF_List *  container,
GF_XMLNode root,
u32  timescale 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ smooth_parse_stream_index()

static GF_Err smooth_parse_stream_index ( GF_MPD mpd,
GF_List *  container,
GF_XMLNode root,
u32  timescale 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function: