libgpac
Documentation of the core library of GPAC. For more information, check out http://gpac.wp.mines-telecom.fr
dash.h File Reference
#include <gpac/tools.h>
+ Include dependency graph for dash.h:

Data Structures

struct  GF_DASHFileIO
 
struct  GF_DASHQualityInfo
 

Typedefs

typedef void * GF_DASHFileIOSession
 
typedef struct __dash_client GF_DashClient
 

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,
  GF_DASH_EVENT_QUALITY_SWITCH, GF_DASH_EVENT_TIMESHIFT_UPDATE, GF_DASH_EVENT_TIMESHIFT_OVERFLOW, GF_DASH_EVENT_CODEC_STAT_QUERY
}
 
enum  GF_DASHInitialSelectionMode {
  GF_DASH_SELECT_QUALITY_LOWEST, GF_DASH_SELECT_QUALITY_HIGHEST, GF_DASH_SELECT_BANDWIDTH_LOWEST, GF_DASH_SELECT_BANDWIDTH_HIGHEST,
  GF_DASH_SELECT_BANDWIDTH_HIGHEST_TILES
}
 
enum  GF_DashDescriptorType {
  GF_MPD_DESC_ACCESSIBILITY, GF_MPD_DESC_AUDIOCONFIG, GF_MPD_DESC_CONTENT_PROTECTION, GF_MPD_DESC_ESSENTIAL_PROPERTIES,
  GF_MPD_DESC_SUPPLEMENTAL_PROPERTIES, GF_MPD_DESC_FRAME_PACKING, GF_MPD_DESC_ROLE, GF_MPD_DESC_RATING,
  GF_MPD_DESC_VIEWPOINT
}
 
enum  GF_DASHTileAdaptationMode {
  GF_DASH_ADAPT_TILE_NONE =0, GF_DASH_ADAPT_TILE_ROWS, GF_DASH_ADAPT_TILE_ROWS_REVERSE, GF_DASH_ADAPT_TILE_ROWS_MIDDLE,
  GF_DASH_ADAPT_TILE_COLUMNS, GF_DASH_ADAPT_TILE_COLUMNS_REVERSE, GF_DASH_ADAPT_TILE_COLUMNS_MIDDLE, GF_DASH_ADAPT_TILE_CENTER,
  GF_DASH_ADAPT_TILE_EDGES
}
 

Functions

GF_DashClientgf_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_value)
 
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)
 
Bool gf_dash_is_m3u8 (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)
 
GF_Err gf_dash_set_timeshift (GF_DashClient *dash, u32 ms_in_timeshift)
 
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)
 
Bool gf_dash_group_has_dependent_group (GF_DashClient *dash, u32 idx)
 
Bool gf_dash_is_group_selectable (GF_DashClient *dash, u32 idx)
 
void gf_dash_group_select (GF_DashClient *dash, u32 idx, Bool select)
 
void gf_dash_groups_set_language (GF_DashClient *dash, const char *lang_code_rfc_5646)
 
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)
 
const char * gf_dash_group_get_segment_init_keys (GF_DashClient *dash, u32 idx, bin128 *key_IV)
 
const char * gf_dash_group_get_language (GF_DashClient *dash, u32 idx)
 
u32 gf_dash_group_get_audio_channels (GF_DashClient *dash, u32 idx)
 
u32 gf_dash_group_get_time_shift_buffer_depth (GF_DashClient *dash, u32 idx)
 
Double gf_dash_get_timeshift_buffer_pos (GF_DashClient *dash)
 
void gf_dash_set_codec_stat (GF_DashClient *dash, u32 idx, u32 avg_dec_time, u32 max_dec_time, u32 irap_avg_dec_time, u32 irap_max_dec_time, Bool codec_reset, Bool decode_only_rap)
 
void gf_dash_set_buffer_levels (GF_DashClient *dash, u32 idx, u32 buffer_min_ms, u32 buffer_max_ms, u32 buffer_occupancy_ms)
 
Bool gf_dash_group_enum_descriptor (GF_DashClient *dash, u32 group_idx, GF_DashDescriptorType desc_type, u32 role_idx, const char **desc_id, const char **desc_scheme, const char **desc_value)
 
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, const char **key_url, bin128 *key_IV)
 
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)
 
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)
 
void gf_dash_set_speed (GF_DashClient *dash, Double speed)
 
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 (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, u8 max_display_bpp)
 
GF_Err gf_dash_set_min_timeout_between_404 (GF_DashClient *dash, u32 min_timeout_between_404)
 
GF_Err gf_dash_set_segment_expiration_threshold (GF_DashClient *dash, u32 expire_after_ms)
 
void gf_dash_debug_group (GF_DashClient *dash, s32 group_index)
 
void gf_dash_set_user_buffer (GF_DashClient *dash, u32 buffer_time_ms)
 
void gf_dash_set_switching_probe_count (GF_DashClient *dash, u32 switch_probe_count)
 
u32 gf_dash_get_period_start (GF_DashClient *dash)
 
u32 gf_dash_get_period_duration (GF_DashClient *dash)
 
u32 gf_dash_group_get_num_qualities (GF_DashClient *dash, u32 idx)
 
void gf_dash_disable_speed_adaptation (GF_DashClient *dash, Bool disable)
 
GF_Err gf_dash_group_get_quality_info (GF_DashClient *dash, u32 idx, u32 quality_idx, GF_DASHQualityInfo *quality)
 
Bool gf_dash_get_automatic_switching (GF_DashClient *dash)
 
GF_Err gf_dash_set_automatic_switching (GF_DashClient *dash, Bool enable_switching)
 
GF_Err gf_dash_group_select_quality (GF_DashClient *dash, u32 idx, const char *ID)
 
u32 gf_dash_group_get_download_rate (GF_DashClient *dash, u32 idx)
 
void gf_dash_override_ntp (GF_DashClient *dash, u64 server_ntp)
 
void gf_dash_set_tile_adaptation_mode (GF_DashClient *dash, GF_DASHTileAdaptationMode mode, u32 tile_rate_decrease)
 
Bool gf_dash_group_get_srd_max_size_info (GF_DashClient *dash, u32 idx, u32 *max_width, u32 *max_height)
 
Bool gf_dash_group_get_srd_info (GF_DashClient *dash, u32 idx, u32 *srd_id, u32 *srd_x, u32 *srd_y, u32 *srd_w, u32 *srd_h, u32 *srd_width, u32 *srd_height)
 

Variables

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

Data Structure Documentation

struct GF_DASHQualityInfo
Data Fields
u32 bandwidth
const char * ID
const char * mime
const char * codec
u32 width
u32 height
Bool interlaced
u32 fps_den
u32 fps_num
u32 par_num
u32 par_den
u32 sample_rate
u32 nb_channels
Bool disabled
Bool is_selected

Typedef Documentation

typedef void* GF_DASHFileIOSession
typedef struct __dash_client GF_DashClient

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 
GF_DASH_EVENT_QUALITY_SWITCH 
GF_DASH_EVENT_TIMESHIFT_UPDATE 
GF_DASH_EVENT_TIMESHIFT_OVERFLOW 
GF_DASH_EVENT_CODEC_STAT_QUERY 
Enumerator
GF_DASH_SELECT_QUALITY_LOWEST 
GF_DASH_SELECT_QUALITY_HIGHEST 
GF_DASH_SELECT_BANDWIDTH_LOWEST 
GF_DASH_SELECT_BANDWIDTH_HIGHEST 
GF_DASH_SELECT_BANDWIDTH_HIGHEST_TILES 
Enumerator
GF_MPD_DESC_ACCESSIBILITY 
GF_MPD_DESC_AUDIOCONFIG 
GF_MPD_DESC_CONTENT_PROTECTION 
GF_MPD_DESC_ESSENTIAL_PROPERTIES 
GF_MPD_DESC_SUPPLEMENTAL_PROPERTIES 
GF_MPD_DESC_FRAME_PACKING 
GF_MPD_DESC_ROLE 
GF_MPD_DESC_RATING 
GF_MPD_DESC_VIEWPOINT 
Enumerator
GF_DASH_ADAPT_TILE_NONE 
GF_DASH_ADAPT_TILE_ROWS 
GF_DASH_ADAPT_TILE_ROWS_REVERSE 
GF_DASH_ADAPT_TILE_ROWS_MIDDLE 
GF_DASH_ADAPT_TILE_COLUMNS 
GF_DASH_ADAPT_TILE_COLUMNS_REVERSE 
GF_DASH_ADAPT_TILE_COLUMNS_MIDDLE 
GF_DASH_ADAPT_TILE_CENTER 
GF_DASH_ADAPT_TILE_EDGES 

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_value 
)
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)
Bool gf_dash_is_m3u8 ( 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)
GF_Err gf_dash_set_timeshift ( GF_DashClient dash,
u32  ms_in_timeshift 
)
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 
)
Bool gf_dash_group_has_dependent_group ( GF_DashClient dash,
u32  idx 
)
Bool gf_dash_is_group_selectable ( GF_DashClient dash,
u32  idx 
)
void gf_dash_group_select ( GF_DashClient dash,
u32  idx,
Bool  select 
)
void gf_dash_groups_set_language ( GF_DashClient dash,
const char *  lang_code_rfc_5646 
)
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 
)
const char* gf_dash_group_get_segment_init_keys ( GF_DashClient dash,
u32  idx,
bin128 key_IV 
)
const char* gf_dash_group_get_language ( GF_DashClient dash,
u32  idx 
)
u32 gf_dash_group_get_audio_channels ( GF_DashClient dash,
u32  idx 
)
u32 gf_dash_group_get_time_shift_buffer_depth ( GF_DashClient dash,
u32  idx 
)
Double gf_dash_get_timeshift_buffer_pos ( GF_DashClient dash)
void gf_dash_set_codec_stat ( GF_DashClient dash,
u32  idx,
u32  avg_dec_time,
u32  max_dec_time,
u32  irap_avg_dec_time,
u32  irap_max_dec_time,
Bool  codec_reset,
Bool  decode_only_rap 
)
void gf_dash_set_buffer_levels ( GF_DashClient dash,
u32  idx,
u32  buffer_min_ms,
u32  buffer_max_ms,
u32  buffer_occupancy_ms 
)
Bool gf_dash_group_enum_descriptor ( GF_DashClient dash,
u32  group_idx,
GF_DashDescriptorType  desc_type,
u32  role_idx,
const char **  desc_id,
const char **  desc_scheme,
const char **  desc_value 
)
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,
const char **  key_url,
bin128 key_IV 
)
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 
)
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 
)
void gf_dash_set_speed ( GF_DashClient dash,
Double  speed 
)
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 ( 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,
u8  max_display_bpp 
)
GF_Err gf_dash_set_min_timeout_between_404 ( GF_DashClient dash,
u32  min_timeout_between_404 
)
GF_Err gf_dash_set_segment_expiration_threshold ( GF_DashClient dash,
u32  expire_after_ms 
)
void gf_dash_debug_group ( GF_DashClient dash,
s32  group_index 
)
void gf_dash_set_user_buffer ( GF_DashClient dash,
u32  buffer_time_ms 
)
void gf_dash_set_switching_probe_count ( GF_DashClient dash,
u32  switch_probe_count 
)
u32 gf_dash_get_period_start ( GF_DashClient dash)
u32 gf_dash_get_period_duration ( GF_DashClient dash)
u32 gf_dash_group_get_num_qualities ( GF_DashClient dash,
u32  idx 
)
void gf_dash_disable_speed_adaptation ( GF_DashClient dash,
Bool  disable 
)
GF_Err gf_dash_group_get_quality_info ( GF_DashClient dash,
u32  idx,
u32  quality_idx,
GF_DASHQualityInfo quality 
)
Bool gf_dash_get_automatic_switching ( GF_DashClient dash)
GF_Err gf_dash_set_automatic_switching ( GF_DashClient dash,
Bool  enable_switching 
)
GF_Err gf_dash_group_select_quality ( GF_DashClient dash,
u32  idx,
const char *  ID 
)
u32 gf_dash_group_get_download_rate ( GF_DashClient dash,
u32  idx 
)
void gf_dash_override_ntp ( GF_DashClient dash,
u64  server_ntp 
)
void gf_dash_set_tile_adaptation_mode ( GF_DashClient dash,
GF_DASHTileAdaptationMode  mode,
u32  tile_rate_decrease 
)
Bool gf_dash_group_get_srd_max_size_info ( GF_DashClient dash,
u32  idx,
u32 max_width,
u32 max_height 
)
Bool gf_dash_group_get_srd_info ( GF_DashClient dash,
u32  idx,
u32 srd_id,
u32 srd_x,
u32 srd_y,
u32 srd_w,
u32 srd_h,
u32 srd_width,
u32 srd_height 
)

Variable Documentation

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

All the possible Mime-types for MPD files

const char* const 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