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

Data Structures

struct  TSI_Output
 
struct  SegInfo
 
struct  ROUTEInCtx
 

Macros

#define OFFS(_n)   #_n, offsetof(ROUTEInCtx, _n)
 

Enumerations

enum  { ROUTEIN_REPAIR_NO = 0 , ROUTEIN_REPAIR_SIMPLE , ROUTEIN_REPAIR_STRICT , ROUTEIN_REPAIR_FULL }
 

Functions

static Bool routein_repair_segment_ts (ROUTEInCtx *ctx, GF_ROUTEEventFileInfo *finfo)
 
static u32 next_top_level_box (GF_ROUTEEventFileInfo *finfo, u8 *data, u32 size, u32 *cur_pos, u32 *box_size)
 
static void routein_repair_segment_isobmf (ROUTEInCtx *ctx, GF_ROUTEEventFileInfo *finfo)
 
static Bool routein_repair_segment (ROUTEInCtx *ctx, GF_ROUTEEventFileInfo *finfo)
 
static GF_FilterProbeScore routein_probe_url (const char *url, const char *mime)
 
static void routein_finalize (GF_Filter *filter)
 
static void push_seg_info (ROUTEInCtx *ctx, GF_FilterPid *pid, GF_ROUTEEventFileInfo *finfo)
 
static void routein_send_file (ROUTEInCtx *ctx, u32 service_id, GF_ROUTEEventFileInfo *finfo, u32 evt_type)
 
static void routein_write_to_disk (ROUTEInCtx *ctx, u32 service_id, GF_ROUTEEventFileInfo *finfo, u32 evt_type)
 
void routein_on_event (void *udta, GF_ROUTEEventType evt, u32 evt_param, GF_ROUTEEventFileInfo *finfo)
 
static Bool routein_local_cache_probe (void *par, char *url, Bool is_destroy)
 
static GF_Err routein_process (GF_Filter *filter)
 
static GF_Err routein_initialize (GF_Filter *filter)
 
static Bool routein_process_event (GF_Filter *filter, const GF_FilterEvent *evt)
 
const GF_FilterRegister * routein_register (GF_FilterSession *session)
 

Variables

static const char * top_codes [] = {"styp", "emsg", "prft", "moof", "mdat", "free", "sidx", "ssix"}
 
static u32 nb_top_codes = GF_ARRAY_LENGTH(top_codes)
 
static const GF_FilterArgs ROUTEInArgs []
 
static const GF_FilterCapability ROUTEInCaps []
 
GF_FilterRegister ROUTEInRegister
 

Data Structure Documentation

◆ TSI_Output

struct TSI_Output
Data Fields
u32 sid
u32 tsi
GF_FilterPid * opid

◆ SegInfo

struct SegInfo
Data Fields
GF_FilterPid * opid
char * seg_name

◆ ROUTEInCtx

struct ROUTEInCtx
Data Fields
char * src
char * ifce
char * odir
Bool gcache
Bool kc
Bool skipr
Bool reorder
Bool fullseg
u32 buffer
u32 timeout
u32 stats
u32 max_segs
u32 tsidbg
u32 rtimeout
u32 nbcached
u32 repair
s32 tunein
s32 stsi
GF_Filter * filter
GF_DownloadManager * dm
char * clock_init_seg
GF_ROUTEDmx * route_dmx
u32 tune_service_id
u32 sync_tsi
u32 last_toi
u32 start_time
u32 tune_time
u32 last_timeout
GF_FilterPid * opid
GF_List * tsi_outs
u32 nb_stats
GF_List * received_seg_names
u32 nb_playing
Bool initial_play_forced

Macro Definition Documentation

◆ OFFS

#define OFFS (   _n)    #_n, offsetof(ROUTEInCtx, _n)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
ROUTEIN_REPAIR_NO 
ROUTEIN_REPAIR_SIMPLE 
ROUTEIN_REPAIR_STRICT 
ROUTEIN_REPAIR_FULL 

Function Documentation

◆ routein_repair_segment_ts()

static Bool routein_repair_segment_ts ( ROUTEInCtx ctx,
GF_ROUTEEventFileInfo finfo 
)
static

◆ next_top_level_box()

static u32 next_top_level_box ( GF_ROUTEEventFileInfo finfo,
u8 data,
u32  size,
u32 cur_pos,
u32 box_size 
)
static

◆ routein_repair_segment_isobmf()

static void routein_repair_segment_isobmf ( ROUTEInCtx ctx,
GF_ROUTEEventFileInfo finfo 
)
static

◆ routein_repair_segment()

static Bool routein_repair_segment ( ROUTEInCtx ctx,
GF_ROUTEEventFileInfo finfo 
)
static

◆ routein_probe_url()

static GF_FilterProbeScore routein_probe_url ( const char *  url,
const char *  mime 
)
static

◆ routein_finalize()

static void routein_finalize ( GF_Filter *  filter)
static

◆ push_seg_info()

static void push_seg_info ( ROUTEInCtx ctx,
GF_FilterPid *  pid,
GF_ROUTEEventFileInfo finfo 
)
static

◆ routein_send_file()

static void routein_send_file ( ROUTEInCtx ctx,
u32  service_id,
GF_ROUTEEventFileInfo finfo,
u32  evt_type 
)
static

◆ routein_write_to_disk()

static void routein_write_to_disk ( ROUTEInCtx ctx,
u32  service_id,
GF_ROUTEEventFileInfo finfo,
u32  evt_type 
)
static

◆ routein_on_event()

void routein_on_event ( void *  udta,
GF_ROUTEEventType  evt,
u32  evt_param,
GF_ROUTEEventFileInfo finfo 
)

◆ routein_local_cache_probe()

static Bool routein_local_cache_probe ( void *  par,
char *  url,
Bool  is_destroy 
)
static

◆ routein_process()

static GF_Err routein_process ( GF_Filter *  filter)
static

◆ routein_initialize()

static GF_Err routein_initialize ( GF_Filter *  filter)
static

◆ routein_process_event()

static Bool routein_process_event ( GF_Filter *  filter,
const GF_FilterEvent *  evt 
)
static

◆ routein_register()

const GF_FilterRegister * routein_register ( GF_FilterSession *  session)

Variable Documentation

◆ top_codes

const char* top_codes[] = {"styp", "emsg", "prft", "moof", "mdat", "free", "sidx", "ssix"}
static

◆ nb_top_codes

u32 nb_top_codes = GF_ARRAY_LENGTH(top_codes)
static

◆ ROUTEInArgs

const GF_FilterArgs ROUTEInArgs[]
static
Initial value:
=
{
{ OFFS(src), "URL of source content", GF_PROP_NAME, NULL, NULL, 0},
{ OFFS(ifce), "default interface to use for multicast. If NULL, the default system interface will be used", GF_PROP_STRING, NULL, NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(gcache), "indicate the files should populate GPAC HTTP cache", GF_PROP_BOOL, "true", NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(tunein), "service ID to bootstrap on for ATSC 3.0 mode (0 means tune to no service, -1 tune all services -2 means tune on first service found)", GF_PROP_SINT, "-2", NULL, 0},
{ OFFS(buffer), "receive buffer size to use in bytes", GF_PROP_UINT, "0x80000", NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(timeout), "timeout in ms after which tunein fails", GF_PROP_UINT, "5000", NULL, 0},
{ OFFS(nbcached), "number of segments to keep in cache per service", GF_PROP_UINT, "8", NULL, GF_FS_ARG_HINT_EXPERT},
{ OFFS(kc), "keep corrupted file", GF_PROP_BOOL, "false", NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(skipr), "skip repeated files (ignored in cache mode)", GF_PROP_BOOL, "true", NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(stsi), "define one output PID per tsi/serviceID (ignored in cache mode)", GF_PROP_BOOL, "false", NULL, GF_FS_ARG_HINT_EXPERT},
{ OFFS(stats), "log statistics at the given rate in ms (0 disables stats)", GF_PROP_UINT, "1000", NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(tsidbg), "gather only objects with given TSI (debug)", GF_PROP_UINT, "0", NULL, GF_FS_ARG_HINT_EXPERT},
{ OFFS(max_segs), "maximum number of segments to keep on disk", GF_PROP_UINT, "0", NULL, GF_FS_ARG_HINT_EXPERT},
{ OFFS(odir), "output directory for standalone mode", GF_PROP_STRING, NULL, NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(reorder), "ignore order flag in ROUTE/LCT packets, avoiding considering object done when TOI changes", GF_PROP_BOOL, "false", NULL, GF_FS_ARG_HINT_EXPERT},
{ OFFS(rtimeout), "default timeout in ms to wait when gathering out-of-order packets", GF_PROP_UINT, "5000", NULL, GF_FS_ARG_HINT_EXPERT},
{ OFFS(fullseg), "only dispatch full segments in cache mode (always true for other modes)", GF_PROP_BOOL, "false", NULL, GF_FS_ARG_HINT_ADVANCED},
{ OFFS(repair), "repair mode for corrupted files\n"
"- no: no repair is performed\n"
"- simple: simple repair is performed (incomplete `mdat` boxes will be kept)\n"
"- strict: incomplete mdat boxes will be lost as well as preceding `moof` boxes\n"
"- full: HTTP-based repair, not yet implemented"
, GF_PROP_UINT, "simple", "no|simple|strict|full", GF_FS_ARG_HINT_EXPERT},
{0}
}
@ GF_FS_ARG_HINT_EXPERT
Definition filters.h:1889
@ GF_FS_ARG_HINT_ADVANCED
Definition filters.h:1887
@ GF_PROP_BOOL
Definition filters.h:767
@ GF_PROP_STRING
Definition filters.h:785
@ GF_PROP_SINT
Definition filters.h:759
@ GF_PROP_NAME
Definition filters.h:793
@ GF_PROP_UINT
Definition filters.h:761
#define OFFS(_n)
Definition in_route.c:868

◆ ROUTEInCaps

const GF_FilterCapability ROUTEInCaps[]
static
Initial value:
=
{
}
@ GF_STREAM_FILE
Definition constants.h:104
#define GF_CAPS_OUTPUT
Definition filters.h:2013
#define CAP_UINT(_f, _a, _b)
Definition filters.h:1955
@ GF_PROP_PID_STREAM_TYPE
Definition filters.h:1016

◆ ROUTEInRegister

GF_FilterRegister ROUTEInRegister