GPAC
Open Source Multimedia Framework. For more information, check out http://gpac.wp.mines-telecom.fr
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups
dash.h File Reference
#include <gpac/tools.h>
+ Include dependency graph for dash.h:
+ This graph shows which files directly or indirectly include this file:

Data Structures

struct  GF_DASHFileIO
 

Typedefs

typedef void * GF_DASHFileIOSession
 

Enumerations

enum  GF_DASHEventType {
  GF_DASH_EVENT_MANIFEST_INIT_ERROR, GF_DASH_EVENT_SELECT_GROUPS, GF_DASH_EVENT_PERIOD_SETUP_ERROR, GF_DASH_EVENT_CREATE_PLAYBACK,
  GF_DASH_EVENT_DESTROY_PLAYBACK, GF_DASH_EVENT_BUFFERING, GF_DASH_EVENT_BUFFER_DONE, GF_DASH_EVENT_SEGMENT_AVAILABLE
}
 
enum  GF_DASHInitialSelectionMode { GF_DASH_SELECT_QUALITY_LOWEST, GF_DASH_SELECT_QUALITY_HIGHEST, GF_DASH_SELECT_BANDWIDTH_LOWEST, GF_DASH_SELECT_BANDWIDTH_HIGHEST }
 

Functions

GF_DashClient * gf_dash_new (GF_DASHFileIO *dash_io, u32 max_cache_duration, u32 auto_switch_count, Bool keep_files, Bool disable_switching, GF_DASHInitialSelectionMode first_select_mode, Bool enable_buffering, u32 initial_time_shift_percent)
 
void gf_dash_del (GF_DashClient *dash)
 
GF_Err gf_dash_open (GF_DashClient *dash, const char *manifest_url)
 
void gf_dash_close (GF_DashClient *dash)
 
const char * gf_dash_get_url (GF_DashClient *dash)
 
void gf_dash_get_info (GF_DashClient *dash, const char **title, const char **source)
 
void gf_dash_switch_quality (GF_DashClient *dash, Bool switch_up, Bool force_immediate_switch)
 
Bool gf_dash_is_running (GF_DashClient *dash)
 
Double gf_dash_get_duration (GF_DashClient *dash)
 
Bool gf_dash_check_mpd_root_type (const char *local_url)
 
u32 gf_dash_get_group_count (GF_DashClient *dash)
 
GF_Err gf_dash_set_group_udta (GF_DashClient *dash, u32 group_index, void *udta)
 
void * gf_dash_get_group_udta (GF_DashClient *dash, u32 group_index)
 
Bool gf_dash_is_group_selected (GF_DashClient *dash, u32 group_index)
 
void gf_dash_group_select (GF_DashClient *dash, u32 idx, Bool select)
 
void gf_dash_groups_set_language (GF_DashClient *dash, const char *lang_3cc)
 
const char * gf_dash_group_get_segment_mime (GF_DashClient *dash, u32 idx)
 
const char * gf_dash_group_get_segment_init_url (GF_DashClient *dash, u32 idx, u64 *start_range, u64 *end_range)
 
GF_Err gf_dash_group_get_next_segment_location (GF_DashClient *dash, u32 idx, u32 dependent_representation_index, const char **url, u64 *start_range, u64 *end_range, s32 *switching_index, const char **switching_url, u64 *switching_start_range, u64 *switching_end_range, const char **original_url, Bool *has_next_segment)
 
GF_Err gf_dash_group_probe_current_download_segment_location (GF_DashClient *dash, u32 idx, const char **url, s32 *switching_index, const char **switching_url, const char **original_url, Bool *switched)
 
Bool gf_dash_group_loop_detected (GF_DashClient *dash, u32 idx)
 
Double gf_dash_group_get_start_range (GF_DashClient *dash, u32 idx)
 
void gf_dash_group_discard_segment (GF_DashClient *dash, u32 idx)
 
u32 gf_dash_group_get_num_segments_ready (GF_DashClient *dash, u32 idx, Bool *group_is_done)
 
u32 gf_dash_group_get_max_segments_in_cache (GF_DashClient *dash, u32 idx)
 
void gf_dash_set_group_done (GF_DashClient *dash, u32 idx, Bool done)
 
GF_Err gf_dash_group_get_presentation_time_offset (GF_DashClient *dash, u32 idx, u64 *presentation_time_offset, u32 *timescale)
 
Bool gf_dash_in_last_period (GF_DashClient *dash)
 
u32 gf_dash_get_period_switch_status (GF_DashClient *dash)
 
void gf_dash_request_period_switch (GF_DashClient *dash)
 
Bool gf_dash_in_period_setup (GF_DashClient *dash)
 
void gf_dash_seek (GF_DashClient *dash, Double start_range)
 
Double gf_dash_get_playback_start_range (GF_DashClient *dash)
 
Bool gf_dash_group_segment_switch_forced (GF_DashClient *dash, u32 idx)
 
GF_Err gf_dash_group_get_video_info (GF_DashClient *dash, u32 idx, u32 *max_width, u32 *max_height)
 
Double gf_dash_group_current_segment_start_time (GF_DashClient *dash, u32 idx)
 
void gf_dash_allow_local_mpd_update (GF_DashClient *dash, Bool allow_local_mpd_update)
 
GF_Err gf_dash_group_get_representation_info (GF_DashClient *dash, u32 idx, u32 representation_idx, u32 *width, u32 *height, u32 *audio_samplerate, u32 *bandwidth, const char **codecs)
 
void gf_dash_get_buffer_info_buffering (GF_DashClient *dash, u32 *total_buffer, u32 *media_buffered)
 
GF_Err gf_dash_group_check_bandwidth (GF_DashClient *dash, u32 idx)
 
GF_Err gf_dash_resync_to_segment (GF_DashClient *dash, const char *latest_segment_name, const char *earliest_segment_name)
 
void gf_dash_set_idle_interval (GF_DashClient *dash, u32 idle_time_ms)
 
void gf_dash_enable_utc_drift_compensation (GF_DashClient *dash, Bool estimate_utc_drift)
 
Bool gf_dash_is_dynamic_mpd (GF_DashClient *dash)
 
u32 gf_dash_get_min_buffer_time (GF_DashClient *dash)
 
void gf_dash_set_utc_shift (GF_DashClient *dash, s32 shift_utc_ms)
 
GF_Err gf_dash_set_max_resolution (GF_DashClient *dash, u32 width, u32 height)
 

Variables

static const char * GF_DASH_MPD_MIME_TYPES [] = { "application/dash+xml", "video/vnd.3gpp.mpd", "audio/vnd.3gpp.mpd", 0 }
 
static const char * GF_DASH_M3U8_MIME_TYPES [] = { "video/x-mpegurl", "audio/x-mpegurl", "application/x-mpegurl", "application/vnd.apple.mpegurl", 0 }
 

Typedef Documentation

typedef void* GF_DASHFileIOSession

Enumeration Type Documentation

Enumerator
GF_DASH_EVENT_MANIFEST_INIT_ERROR 
GF_DASH_EVENT_SELECT_GROUPS 
GF_DASH_EVENT_PERIOD_SETUP_ERROR 
GF_DASH_EVENT_CREATE_PLAYBACK 
GF_DASH_EVENT_DESTROY_PLAYBACK 
GF_DASH_EVENT_BUFFERING 
GF_DASH_EVENT_BUFFER_DONE 
GF_DASH_EVENT_SEGMENT_AVAILABLE 
Enumerator
GF_DASH_SELECT_QUALITY_LOWEST 
GF_DASH_SELECT_QUALITY_HIGHEST 
GF_DASH_SELECT_BANDWIDTH_LOWEST 
GF_DASH_SELECT_BANDWIDTH_HIGHEST 

Function Documentation

GF_DashClient* gf_dash_new ( GF_DASHFileIO *  dash_io,
u32  max_cache_duration,
u32  auto_switch_count,
Bool  keep_files,
Bool  disable_switching,
GF_DASHInitialSelectionMode  first_select_mode,
Bool  enable_buffering,
u32  initial_time_shift_percent 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_del ( GF_DashClient *  dash)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_open ( GF_DashClient *  dash,
const char *  manifest_url 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_close ( GF_DashClient *  dash)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const char* gf_dash_get_url ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

void gf_dash_get_info ( GF_DashClient *  dash,
const char **  title,
const char **  source 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_switch_quality ( GF_DashClient *  dash,
Bool  switch_up,
Bool  force_immediate_switch 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Bool gf_dash_is_running ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

Double gf_dash_get_duration ( GF_DashClient *  dash)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Bool gf_dash_check_mpd_root_type ( const char *  local_url)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 gf_dash_get_group_count ( GF_DashClient *  dash)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_set_group_udta ( GF_DashClient *  dash,
u32  group_index,
void *  udta 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void* gf_dash_get_group_udta ( GF_DashClient *  dash,
u32  group_index 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Bool gf_dash_is_group_selected ( GF_DashClient *  dash,
u32  group_index 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_group_select ( GF_DashClient *  dash,
u32  idx,
Bool  select 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_groups_set_language ( GF_DashClient *  dash,
const char *  lang_3cc 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const char* gf_dash_group_get_segment_mime ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const char* gf_dash_group_get_segment_init_url ( GF_DashClient *  dash,
u32  idx,
u64 start_range,
u64 end_range 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_group_get_next_segment_location ( GF_DashClient *  dash,
u32  idx,
u32  dependent_representation_index,
const char **  url,
u64 start_range,
u64 end_range,
s32 switching_index,
const char **  switching_url,
u64 switching_start_range,
u64 switching_end_range,
const char **  original_url,
Bool has_next_segment 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_group_probe_current_download_segment_location ( GF_DashClient *  dash,
u32  idx,
const char **  url,
s32 switching_index,
const char **  switching_url,
const char **  original_url,
Bool switched 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Bool gf_dash_group_loop_detected ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

Double gf_dash_group_get_start_range ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_group_discard_segment ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 gf_dash_group_get_num_segments_ready ( GF_DashClient *  dash,
u32  idx,
Bool group_is_done 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 gf_dash_group_get_max_segments_in_cache ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_set_group_done ( GF_DashClient *  dash,
u32  idx,
Bool  done 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_group_get_presentation_time_offset ( GF_DashClient *  dash,
u32  idx,
u64 presentation_time_offset,
u32 timescale 
)

+ Here is the call graph for this function:

Bool gf_dash_in_last_period ( GF_DashClient *  dash)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 gf_dash_get_period_switch_status ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

void gf_dash_request_period_switch ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

Bool gf_dash_in_period_setup ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

void gf_dash_seek ( GF_DashClient *  dash,
Double  start_range 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Double gf_dash_get_playback_start_range ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

Bool gf_dash_group_segment_switch_forced ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_group_get_video_info ( GF_DashClient *  dash,
u32  idx,
u32 max_width,
u32 max_height 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Double gf_dash_group_current_segment_start_time ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_allow_local_mpd_update ( GF_DashClient *  dash,
Bool  allow_local_mpd_update 
)
GF_Err gf_dash_group_get_representation_info ( GF_DashClient *  dash,
u32  idx,
u32  representation_idx,
u32 width,
u32 height,
u32 audio_samplerate,
u32 bandwidth,
const char **  codecs 
)

+ Here is the call graph for this function:

void gf_dash_get_buffer_info_buffering ( GF_DashClient *  dash,
u32 total_buffer,
u32 media_buffered 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_group_check_bandwidth ( GF_DashClient *  dash,
u32  idx 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

GF_Err gf_dash_resync_to_segment ( GF_DashClient *  dash,
const char *  latest_segment_name,
const char *  earliest_segment_name 
)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void gf_dash_set_idle_interval ( GF_DashClient *  dash,
u32  idle_time_ms 
)
void gf_dash_enable_utc_drift_compensation ( GF_DashClient *  dash,
Bool  estimate_utc_drift 
)

+ Here is the caller graph for this function:

Bool gf_dash_is_dynamic_mpd ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

u32 gf_dash_get_min_buffer_time ( GF_DashClient *  dash)

+ Here is the caller graph for this function:

void gf_dash_set_utc_shift ( GF_DashClient *  dash,
s32  shift_utc_ms 
)

+ Here is the caller graph for this function:

GF_Err gf_dash_set_max_resolution ( GF_DashClient *  dash,
u32  width,
u32  height 
)

+ Here is the caller graph for this function:

Variable Documentation

const char* GF_DASH_MPD_MIME_TYPES[] = { "application/dash+xml", "video/vnd.3gpp.mpd", "audio/vnd.3gpp.mpd", 0 }
static

All the possible Mime-types for MPD files

const char* GF_DASH_M3U8_MIME_TYPES[] = { "video/x-mpegurl", "audio/x-mpegurl", "application/x-mpegurl", "application/vnd.apple.mpegurl", 0 }
static

All the possible Mime-types for M3U8 files