libgpac
Documentation of the core library of GPAC
Loading...
Searching...
No Matches
route_dmx.c File Reference
#include <gpac/route.h>
#include <gpac/network.h>
#include <gpac/bitstream.h>
#include <gpac/xml.h>
#include <gpac/thread.h>

Data Structures

struct  GF_ROUTELCTReg
 
struct  GF_ROUTELCTFile
 
struct  GF_ROUTELCTChannel
 
struct  GF_LCTObject
 
struct  GF_ROUTESession
 
struct  GF_ROUTEService
 
struct  GF_ROUTEDmx
 

Macros

#define GF_ROUTE_SOCK_SIZE   0x80000
 

Enumerations

enum  GF_LCTObjectStatus {
  GF_LCT_OBJ_INIT =0 , GF_LCT_OBJ_RECEPTION , GF_LCT_OBJ_DONE_ERR , GF_LCT_OBJ_DONE ,
  GF_LCT_OBJ_DISPATCHED
}
 
enum  GF_ROUTETuneMode { GF_ROUTE_TUNE_OFF =0 , GF_ROUTE_TUNE_ON , GF_ROUTE_TUNE_SLS_ONLY }
 

Functions

static void gf_route_static_files_del (GF_List *files)
 
static void gf_route_route_session_del (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_ROUTEDmx * gf_route_dmx_new_internal (const char *ifce, u32 sock_buffer_size, Bool is_atsc, void(*on_event)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info), void *udta)
 
static void gf_route_register_service_sockets (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, Bool do_register)
 
static void gf_route_create_service (GF_ROUTEDmx *routedmx, const char *dst_ip, u32 dst_port, u32 service_id, u32 protocol)
 
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_Err gf_route_atsc3_tune_in (GF_ROUTEDmx *routedmx, u32 serviceID, Bool tune_all_sls)
 
GF_EXPORT GF_Err gf_route_set_reorder (GF_ROUTEDmx *routedmx, Bool force_reorder, u32 timeout_ms)
 
GF_EXPORT GF_Err gf_route_set_allow_progressive_dispatch (GF_ROUTEDmx *routedmx, Bool allow_progressive)
 
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 GF_Err gf_route_dmx_push_object (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_LCTObject *obj, Bool final_push, Bool partial, Bool updated, u64 bytes_done)
 
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 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)
 
static GF_Err gf_route_service_setup_dash (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, char *content, char *content_location)
 
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_service (GF_ROUTEDmx *routedmx, GF_ROUTEService *s, GF_ROUTESession *route_sess)
 
static GF_Err gf_route_dmx_process_lls (GF_ROUTEDmx *routedmx)
 
GF_EXPORT GF_Err gf_route_dmx_process (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)
 
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 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)
 

Data Structure Documentation

◆ GF_ROUTELCTReg

struct GF_ROUTELCTReg
Data Fields
u8 codepoint
u8 format_id
u8 frag
u8 order
u32 src_fec_payload_id

◆ GF_ROUTELCTFile

struct GF_ROUTELCTFile
Data Fields
char * filename
u32 toi
u32 crc

◆ GF_ROUTELCTChannel

struct GF_ROUTELCTChannel
Data Fields
u32 tsi
char * toi_template
GF_List * static_files
GF_ROUTELCTReg CPs[8]
u32 nb_cps
u32 last_dispatched_tsi
u32 last_dispatched_toi
Bool tsi_init

◆ GF_LCTObject

struct 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 download_time_ms
u32 last_gather_time
u8 closed_flag
u8 force_keep
GF_ROUTELCTChannel * rlct
GF_ROUTELCTFile * rlct_file
u32 prev_start_offset
char solved_path[GF_MAX_PATH]
GF_Blob blob
void * udta

◆ GF_ROUTESession

struct GF_ROUTESession
Data Fields
GF_Socket * sock
GF_List * channels

◆ GF_ROUTEService

struct GF_ROUTEService
Data Fields
u32 service_id
u32 protocol
u32 mpd_version
u32 stsid_version
GF_Socket * sock
u32 secondary_sockets
GF_List * objects
GF_LCTObject * last_active_obj
u32 port
char * dst_ip
u32 last_dispatched_toi_on_tsi_zero
u32 stsid_crc
GF_List * route_sessions
GF_ROUTETuneMode tune_mode
void * udta

Macro Definition Documentation

◆ GF_ROUTE_SOCK_SIZE

#define GF_ROUTE_SOCK_SIZE   0x80000

Enumeration Type Documentation

◆ GF_LCTObjectStatus

Enumerator
GF_LCT_OBJ_INIT 
GF_LCT_OBJ_RECEPTION 
GF_LCT_OBJ_DONE_ERR 
GF_LCT_OBJ_DONE 
GF_LCT_OBJ_DISPATCHED 

◆ GF_ROUTETuneMode

Enumerator
GF_ROUTE_TUNE_OFF 
GF_ROUTE_TUNE_ON 
GF_ROUTE_TUNE_SLS_ONLY 

Function Documentation

◆ gf_route_static_files_del()

static void gf_route_static_files_del ( GF_List *  files)
static

◆ gf_route_route_session_del()

static void gf_route_route_session_del ( GF_ROUTESession rs)
static

◆ gf_route_lct_obj_del()

static void gf_route_lct_obj_del ( GF_LCTObject o)
static

◆ gf_route_service_del()

static void gf_route_service_del ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s 
)
static

◆ gf_route_dmx_new_internal()

static GF_ROUTEDmx * gf_route_dmx_new_internal ( const char *  ifce,
u32  sock_buffer_size,
Bool  is_atsc,
void(*)(void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *info)  on_event,
void *  udta 
)
static

◆ gf_route_register_service_sockets()

static void gf_route_register_service_sockets ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
Bool  do_register 
)
static

◆ gf_route_create_service()

static void gf_route_create_service ( GF_ROUTEDmx *  routedmx,
const char *  dst_ip,
u32  dst_port,
u32  service_id,
u32  protocol 
)
static

◆ gf_route_atsc_dmx_new()

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 
)

◆ gf_route_dmx_new()

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 
)

◆ gf_route_dmx_process_slt()

static GF_Err gf_route_dmx_process_slt ( GF_ROUTEDmx *  routedmx,
GF_XMLNode root 
)
static

◆ get_lct_obj_status_name()

static const char * get_lct_obj_status_name ( GF_LCTObjectStatus  status)
static

◆ gf_route_obj_to_reservoir()

static void gf_route_obj_to_reservoir ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
GF_LCTObject obj 
)
static

◆ gf_route_dmx_push_object()

static GF_Err gf_route_dmx_push_object ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
GF_LCTObject obj,
Bool  final_push,
Bool  partial,
Bool  updated,
u64  bytes_done 
)
static

◆ gf_route_dmx_process_object()

static GF_Err gf_route_dmx_process_object ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
GF_LCTObject obj 
)
static

◆ gf_route_service_flush_object()

static GF_Err gf_route_service_flush_object ( GF_ROUTEService s,
GF_LCTObject obj 
)
static

◆ gf_route_service_gather_object()

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

◆ gf_route_service_setup_dash()

static GF_Err gf_route_service_setup_dash ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
char *  content,
char *  content_location 
)
static

◆ gf_route_service_parse_mbms_enveloppe()

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_route_service_setup_stsid()

static GF_Err gf_route_service_setup_stsid ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
char *  content,
char *  content_location 
)
static

◆ gf_route_dmx_process_service_signaling()

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_route_dmx_process_service()

static GF_Err gf_route_dmx_process_service ( GF_ROUTEDmx *  routedmx,
GF_ROUTEService s,
GF_ROUTESession route_sess 
)
static

◆ gf_route_dmx_process_lls()

static GF_Err gf_route_dmx_process_lls ( GF_ROUTEDmx *  routedmx)
static

◆ gf_route_dmx_keep_or_remove_object_by_name()

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