|  | libgpac
    Documentation of the core library of GPAC | 
#include <gpac/route.h>#include <gpac/network.h>#include <gpac/bitstream.h>#include <gpac/xml.h>#include <gpac/thread.h> Include dependency graph for route_dmx.c:
 Include dependency graph for route_dmx.c:| Data Structures | |
| struct | GF_ROUTELCTReg | 
| struct | GF_ROUTELCTFile | 
| struct | GF_ROUTELCTChannel | 
| struct | GF_FLUTELLMapEntry | 
| struct | GF_LCTObject | 
| struct | GF_ROUTESession | 
| struct | GF_ROUTEService | 
| struct | GF_ROUTEDmx | 
| Macros | |
| #define | GF_ROUTE_SOCK_SIZE 0x80000 | 
| #define | MAX_SEG_IN_NRT 4 | 
| #define | HAS_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-mpegURL|application/vnd.apple.mpegURL" | 
| #define | GF_ROUTE_MAX_SIZE 0x40000000 | 
| Typedefs | |
| typedef GF_Err(* | gf_service_process) (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_ROUTESession *route_sess) | 
| Enumerations | |
| enum | GF_ServiceProtocolType { GF_SERVICE_UNDEFINED =0 , GF_SERVICE_ROUTE =1 , GF_SERVICE_MMTP =2 , GF_SERVICE_DVB_FLUTE } | 
| enum | GF_LCTObjectStatus { GF_LCT_OBJ_INIT =0 , GF_LCT_OBJ_RECEPTION , GF_LCT_OBJ_DONE_ERR , GF_LCT_OBJ_DONE } | 
| enum | GF_FLUTEType { GF_FLUTE_NONE = 0 , GF_FLUTE_FDT , GF_FLUTE_DVB_MABR_CFG , GF_FLUTE_DASH_MANIFEST , GF_FLUTE_HLS_MANIFEST , GF_FLUTE_HLS_VARIANT , GF_FLUTE_OBJ , GF_FLUTE_PROBE_TYPE } | 
| enum | GF_ROUTETuneMode { GF_ROUTE_TUNE_OFF =0 , GF_ROUTE_TUNE_ON , GF_ROUTE_TUNE_SLS_ONLY } | 
| Functions | |
| Bool | gf_sk_has_nrt_netcap (GF_Socket *sk) | 
| static GF_Err | dmx_process_service_route (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_ROUTESession *route_sess) | 
| static GF_Err | dmx_process_service_dvb_flute (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_ROUTESession *route_sess) | 
| static void | gf_route_static_files_del (GF_List *files) | 
| static void | gf_route_route_session_del (GF_ROUTEDmx *routedmx, GF_ROUTESession *rs) | 
| static void | gf_route_lct_obj_del (GF_LCTObject *o) | 
| static void | gf_route_service_del (GF_ROUTEDmx *routedmx, GF_ROUTEService *s) | 
| GF_EXPORT void | gf_route_dmx_del (GF_ROUTEDmx *routedmx) | 
| static GF_Err | routedmx_setup_socket (GF_ROUTEDmx *routedmx, const char *log_name, GF_Socket *sock, const char *dst_ip, u32 dst_port) | 
| static GF_ROUTEDmx * | gf_route_dmx_new_internal (const char *ifce, u32 sock_buffer_size, const char *netcap_id, Bool is_atsc, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info), void *udta, const char *log_name) | 
| static void | gf_route_register_service_sockets (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, Bool do_register) | 
| static GF_ROUTEService * | gf_route_create_service (GF_ROUTEDmx *routedmx, const char *dst_ip, u32 dst_port, u32 service_id, GF_ServiceProtocolType protocol_type) | 
| GF_EXPORT GF_ROUTEDmx * | gf_route_atsc_dmx_new (const char *ifce, u32 sock_buffer_size, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info), void *udta) | 
| GF_EXPORT GF_ROUTEDmx * | gf_route_dmx_new (const char *ip, u32 port, const char *ifce, u32 sock_buffer_size, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info), void *udta) | 
| GF_EXPORT GF_ROUTEDmx * | gf_route_atsc_dmx_new_ex (const char *ifce, u32 sock_buffer_size, const char *netcap_id, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info), void *udta) | 
| GF_EXPORT GF_ROUTEDmx * | gf_route_dmx_new_ex (const char *ip, u32 port, const char *ifce, u32 sock_buffer_size, const char *netcap_id, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info), void *udta) | 
| GF_ROUTEDmx * | gf_dvb_mabr_dmx_new (const char *ip, u32 port, const char *ifce, u32 sock_buffer_size, const char *netcap_id, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *finfo), void *udta) | 
| GF_EXPORT GF_Err | gf_route_atsc3_tune_in (GF_ROUTEDmx *routedmx, u32 serviceID, Bool tune_all_sls) | 
| GF_EXPORT GF_Err | gf_route_dmx_set_reorder (GF_ROUTEDmx *routedmx, Bool force_reorder, u32 timeout_us) | 
| GF_EXPORT GF_Err | gf_route_set_dispatch_mode (GF_ROUTEDmx *routedmx, GF_RouteProgressiveDispatch dispatch_mode) | 
| static GF_BlobRangeStatus | routedmx_check_blob_range (GF_Blob *blob, u64 start_offset, u32 *io_size) | 
| static GF_Err | gf_route_dmx_process_slt (GF_ROUTEDmx *routedmx, GF_XMLNode *root) | 
| static const char * | get_lct_obj_status_name (GF_LCTObjectStatus status) | 
| static void | gf_route_obj_to_reservoir (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_LCTObject *obj) | 
| static void | gf_route_lct_removed (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_ROUTELCTChannel *lc) | 
| static GF_Err | gf_route_dmx_push_object (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_LCTObject *obj, Bool final_push) | 
| static GF_Err | gf_route_dmx_process_dvb_flute_signaling (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_LCTObject *fdt_obj) | 
| static GF_Err | gf_route_service_setup_dash (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, char *content, char *content_location, u32 file_type) | 
| static const char * | _xml_get_attr (const GF_XMLNode *n, const char *att_name) | 
| static const GF_XMLNode * | _xml_get_child (const GF_XMLNode *n, const char *child_name) | 
| static const char * | _xml_get_child_text (const GF_XMLNode *n, const char *child_name) | 
| static u32 | _xml_get_child_count (const GF_XMLNode *n, const char *child_name) | 
| static GF_Err | gf_route_dmx_process_dvb_mcast_signaling (GF_ROUTEDmx *routedmx, GF_ROUTEService *parent_s, GF_LCTObject *object) | 
| static GF_Err | gf_route_dmx_process_object (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_LCTObject *obj) | 
| static GF_Err | gf_route_service_flush_object (GF_ROUTEService *s, GF_LCTObject *obj) | 
| static void | gf_route_service_purge_old_objects (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, u32 tsi, u32 toi, Bool in_order, GF_LCTObject *in_obj) | 
| static GF_Err | gf_route_service_gather_object (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, u32 tsi, u32 toi, u32 start_offset, char *data, u32 size, u32 total_len, Bool close_flag, Bool in_order, GF_ROUTELCTChannel *rlct, GF_LCTObject **gather_obj, s32 flute_esi, u32 fdt_symbol_length) | 
| static GF_Err | gf_route_service_parse_mbms_enveloppe (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, char *content, char *content_location, u32 *stsid_version, u32 *mpd_version) | 
| static GF_Err | gf_route_service_setup_stsid (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, char *content, char *content_location) | 
| static GF_Err | gf_route_dmx_process_service_signaling (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_LCTObject *object, u8 cc, u32 stsid_version, u32 mpd_version) | 
| static GF_Err | gf_route_dmx_process_lls (GF_ROUTEDmx *routedmx) | 
| GF_EXPORT GF_Err | gf_route_dmx_process (GF_ROUTEDmx *routedmx) | 
| void | gf_route_dmx_check_timeouts (GF_ROUTEDmx *routedmx) | 
| Bool | gf_route_dmx_has_active_multicast (GF_ROUTEDmx *routedmx) | 
| GF_EXPORT Bool | gf_route_dmx_find_atsc3_service (GF_ROUTEDmx *routedmx, u32 service_id) | 
| GF_EXPORT u32 | gf_route_dmx_get_object_count (GF_ROUTEDmx *routedmx, u32 service_id) | 
| static GF_Err | gf_route_dmx_keep_or_remove_object_by_name (GF_ROUTEDmx *routedmx, u32 service_id, char *fileName, Bool purge_previous, Bool is_remove, Bool is_locate) | 
| GF_EXPORT GF_Err | gf_route_dmx_force_keep_object_by_name (GF_ROUTEDmx *routedmx, u32 service_id, char *fileName) | 
| GF_EXPORT GF_Err | gf_route_dmx_remove_object_by_name (GF_ROUTEDmx *routedmx, u32 service_id, char *fileName, Bool purge_previous) | 
| GF_EXPORT GF_Err | gf_route_dmx_has_object_by_name (GF_ROUTEDmx *routedmx, u32 service_id, const char *fileName) | 
| GF_EXPORT GF_Err | gf_route_dmx_force_keep_object (GF_ROUTEDmx *routedmx, u32 service_id, u32 tsi, u32 toi, Bool force_keep) | 
| GF_EXPORT Bool | gf_route_dmx_remove_first_object (GF_ROUTEDmx *routedmx, u32 service_id) | 
| GF_EXPORT void | gf_route_dmx_purge_objects (GF_ROUTEDmx *routedmx, u32 service_id) | 
| GF_EXPORT void | gf_route_dmx_set_service_udta (GF_ROUTEDmx *routedmx, u32 service_id, void *udta) | 
| GF_EXPORT void * | gf_route_dmx_get_service_udta (GF_ROUTEDmx *routedmx, u32 service_id) | 
| GF_EXPORT u64 | gf_route_dmx_get_first_packet_time (GF_ROUTEDmx *routedmx) | 
| GF_EXPORT u64 | gf_route_dmx_get_last_packet_time (GF_ROUTEDmx *routedmx) | 
| GF_EXPORT u64 | gf_route_dmx_get_nb_packets (GF_ROUTEDmx *routedmx) | 
| GF_EXPORT u64 | gf_route_dmx_get_recv_bytes (GF_ROUTEDmx *routedmx) | 
| GF_EXPORT void | gf_route_dmx_debug_tsi (GF_ROUTEDmx *routedmx, u32 tsi) | 
| GF_EXPORT GF_Err | gf_route_dmx_patch_frag_info (GF_ROUTEDmx *routedmx, u32 service_id, GF_ROUTEEventFileInfo *finfo, u32 br_start, u32 br_end) | 
| GF_EXPORT GF_Err | gf_route_dmx_patch_blob_size (GF_ROUTEDmx *routedmx, u32 service_id, GF_ROUTEEventFileInfo *finfo, u32 new_size) | 
| GF_Err | gf_route_dmx_mark_active_quality (GF_ROUTEDmx *routedmx, u32 service_id, const char *period_id, s32 as_id, const char *rep_id, Bool is_selected) | 
| void | gf_route_dmx_reset_all (GF_ROUTEDmx *routedmx) | 
| struct GF_ROUTELCTChannel | 
 Collaboration diagram for GF_ROUTELCTChannel:
 Collaboration diagram for GF_ROUTELCTChannel:| Data Fields | ||
|---|---|---|
| u32 | tsi | |
| char * | toi_template | |
| GF_List * | static_files | |
| u32 | num_components | |
| GF_ROUTELCTReg | CPs[8] | |
| u32 | nb_cps | |
| u32 | last_dispatched_tsi | |
| u32 | last_dispatched_toi | |
| Bool | tsi_init | |
| u32 | flute_fdt_crc | |
| GF_ROUTEService * | flute_parent_service | |
| Bool | tsi_probe | |
| Bool | is_active | |
| Bool | first_seg_received | |
| char * | dash_period_id | |
| s32 | dash_as_id | |
| char * | dash_rep_id | |
| struct GF_FLUTELLMapEntry | 
| struct GF_LCTObject | 
 Collaboration diagram for GF_LCTObject:
 Collaboration diagram for GF_LCTObject:| Data Fields | ||
|---|---|---|
| u32 | toi | |
| u32 | tsi | |
| u32 | total_length | |
| char * | payload | |
| u32 | nb_bytes | |
| u32 | nb_recv_bytes | |
| u32 | alloc_size | |
| u32 | nb_frags | |
| u32 | nb_alloc_frags | |
| u32 | nb_recv_frags | |
| GF_LCTFragInfo * | frags | |
| GF_LCTObjectStatus | status | |
| u32 | start_time_ms | |
| u32 | download_time_ms | |
| u64 | last_gather_time | |
| u8 | closed_flag | |
| u8 | force_keep | |
| u8 | ll_map_last | |
| u8 | flute_type | |
| u8 | dispatched | |
| GF_ROUTELCTChannel * | rlct | |
| GF_ROUTELCTFile * | rlct_file | |
| u32 | prev_start_offset | |
| u32 | flute_symbol_size | |
| u32 | flute_nb_symbols | |
| char | solved_path[GF_MAX_PATH] | |
| u32 | ll_maps_count | |
| u32 | ll_maps_alloc | |
| GF_FLUTELLMapEntry * | ll_map | |
| GF_Blob | blob | |
| void * | udta | |
| struct GF_ROUTESession | 
| struct __route_service | 
 Collaboration diagram for GF_ROUTEService:
 Collaboration diagram for GF_ROUTEService:| Data Fields | ||
|---|---|---|
| u32 | service_id | |
| GF_ServiceProtocolType | protocol | |
| u32 | mpd_version | |
| u32 | stsid_version | |
| GF_Socket * | sock | |
| u32 | secondary_sockets | |
| GF_List * | objects | |
| GF_LCTObject * | last_active_obj | |
| u32 | nb_media_streams | |
| u32 | nb_active | |
| gf_service_process | process_service | |
| u32 | port | |
| char * | dst_ip | |
| u32 | last_dispatched_toi_on_tsi_zero | |
| u32 | stsid_crc | |
| u32 | flute_fdt_crc | |
| u32 | dvb_mabr_cfg_crc | |
| GF_List * | route_sessions | |
| GF_ROUTETuneMode | tune_mode | |
| void * | udta | |
| u32 | manifest_crc | |
| char * | service_identifier | |
| char * | log_name | |
| Bool | in_reset | |
| #define GF_ROUTE_SOCK_SIZE 0x80000 | 
| #define MAX_SEG_IN_NRT 4 | 
| #define HAS_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-mpegURL|application/vnd.apple.mpegURL" | 
| #define GF_ROUTE_MAX_SIZE 0x40000000 | 
| typedef GF_Err(* gf_service_process) (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_ROUTESession *route_sess) | 
| enum GF_LCTObjectStatus | 
| enum GF_FLUTEType | 
| enum GF_ROUTETuneMode | 
| Bool gf_sk_has_nrt_netcap | ( | GF_Socket * | sk | ) | 
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_EXPORT GF_ROUTEDmx * gf_route_atsc_dmx_new | ( | const char * | ifce, | 
| u32 | sock_buffer_size, | ||
| void(*)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info) | on_event, | ||
| void * | udta | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function:| GF_EXPORT GF_ROUTEDmx * gf_route_dmx_new | ( | const char * | ip, | 
| u32 | port, | ||
| const char * | ifce, | ||
| u32 | sock_buffer_size, | ||
| void(*)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info) | on_event, | ||
| void * | udta | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function:| GF_EXPORT GF_ROUTEDmx * gf_route_atsc_dmx_new_ex | ( | const char * | ifce, | 
| u32 | sock_buffer_size, | ||
| const char * | netcap_id, | ||
| void(*)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info) | on_event, | ||
| void * | udta | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function:| GF_EXPORT GF_ROUTEDmx * gf_route_dmx_new_ex | ( | const char * | ip, | 
| u32 | port, | ||
| const char * | ifce, | ||
| u32 | sock_buffer_size, | ||
| const char * | netcap_id, | ||
| void(*)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info) | on_event, | ||
| void * | udta | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function: