![]() |
libgpac
Documentation of the core library of GPAC
|
ROUTE ATSC 3.0 reciever. More...
Data Structures | |
| struct | GF_LCTFragInfo |
| struct | GF_ROUTEEventFileInfo |
Macros | |
| #define | GF_ATSC_MCAST_ADDR "224.0.23.60" |
| #define | GF_ATSC_MCAST_PORT 4937 |
Enumerations | |
| enum | GF_ROUTEEventType { GF_ROUTE_EVT_SERVICE_FOUND = 0 , GF_ROUTE_EVT_SERVICE_SCAN , GF_ROUTE_EVT_MPD , GF_ROUTE_EVT_FILE , GF_ROUTE_EVT_DYN_SEG , GF_ROUTE_EVT_DYN_SEG_FRAG , GF_ROUTE_EVT_FILE_DELETE } |
| enum | { GF_LCT_EXT_NOP = 0 , GF_LCT_EXT_AUTH = 1 , GF_LCT_EXT_TIME = 2 , GF_LCT_EXT_FTI = 64 , GF_LCT_EXT_FDT = 192 , GF_LCT_EXT_CENC = 193 , GF_LCT_EXT_TOL24 = 194 , GF_LCT_EXT_TOL48 = 67 } |
Functions | |
| 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 *finfo), void *udta) |
| 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 *finfo), void *udta) |
| void | gf_route_dmx_del (GF_ROUTEDmx *routedmx) |
| GF_Err | gf_route_dmx_process (GF_ROUTEDmx *routedmx) |
| GF_Err | gf_route_set_reorder (GF_ROUTEDmx *routedmx, Bool force_reorder, u32 timeout_ms) |
| GF_Err | gf_route_set_allow_progressive_dispatch (GF_ROUTEDmx *routedmx, Bool allow_progressive) |
| GF_Err | gf_route_atsc3_tune_in (GF_ROUTEDmx *routedmx, u32 service_id, Bool tune_others) |
| u32 | gf_route_dmx_get_object_count (GF_ROUTEDmx *routedmx, u32 service_id) |
| GF_Err | gf_route_dmx_remove_object_by_name (GF_ROUTEDmx *routedmx, u32 service_id, char *fileName, Bool purge_previous) |
| GF_Err | gf_route_dmx_force_keep_object_by_name (GF_ROUTEDmx *routedmx, u32 service_id, char *fileName) |
| Bool | gf_route_dmx_remove_first_object (GF_ROUTEDmx *routedmx, u32 service_id) |
| Bool | gf_route_dmx_find_atsc3_service (GF_ROUTEDmx *routedmx, u32 service_id) |
| void | gf_route_dmx_purge_objects (GF_ROUTEDmx *routedmx, u32 service_id) |
| u64 | gf_route_dmx_get_first_packet_time (GF_ROUTEDmx *routedmx) |
| u64 | gf_route_dmx_get_last_packet_time (GF_ROUTEDmx *routedmx) |
| u64 | gf_route_dmx_get_nb_packets (GF_ROUTEDmx *routedmx) |
| u64 | gf_route_dmx_get_recv_bytes (GF_ROUTEDmx *routedmx) |
| void | gf_route_dmx_debug_tsi (GF_ROUTEDmx *routedmx, u32 tsi) |
| void | gf_route_dmx_set_service_udta (GF_ROUTEDmx *routedmx, u32 service_id, void *udta) |
| void * | gf_route_dmx_get_service_udta (GF_ROUTEDmx *routedmx, u32 service_id) |
ROUTE ATSC 3.0 reciever.
The ROUTE receiver implements part of the ATSC 3.0 specification, mostly low-level signaling and ROUTE reception. It gathers objects from a ROUTE session and sends them back to the user through a callback, or deletes them if no callback is sent. The route demuxer does not try to repairing files, it is the user responsability to do so.
| struct GF_LCTFragInfo |
| struct GF_ROUTEEventFileInfo |
Structure used to communicate file objects properties to the user
| Data Fields | ||
|---|---|---|
| const char * | filename |
original file name |
| GF_Blob * | blob |
blob data pointer |
| u32 | total_size |
total size of object if known, 0 otherwise |
| u32 | tsi |
object TSI |
| u32 | toi |
object TOI |
| u32 | download_ms |
download time in ms |
| Bool | updated |
flag set if file content has been modified - not set for GF_ROUTE_EVT_DYN_SEG (always true) |
| u32 | nb_frags |
number of fragments, only set for GF_ROUTE_EVT_DYN_SEG |
| GF_LCTFragInfo * | frags |
fragment info, only set for GF_ROUTE_EVT_DYN_SEG |
| void * | udta |
user data set to current object after callback, and passed back on next callbacks on same object Only used for GF_ROUTE_EVT_FILE, GF_ROUTE_EVT_DYN_SEG, GF_ROUTE_EVT_DYN_SEG_FRAG and GF_ROUTE_EVT_FILE_DELETE |
| #define GF_ATSC_MCAST_ADDR "224.0.23.60" |
ATSC3.0 bootstrap address for LLS
| #define GF_ATSC_MCAST_PORT 4937 |
ATSC3.0 bootstrap port for LLS
| enum GF_ROUTEEventType |
The types of events used to communicate withe the demuxer user.
| Enumerator | |
|---|---|
| GF_ROUTE_EVT_SERVICE_FOUND | A new service detected, service ID is in evt_param, no file info |
| GF_ROUTE_EVT_SERVICE_SCAN | Service scan completed, no evt_param, no file info |
| GF_ROUTE_EVT_MPD | New MPD available for service, service ID is in evt_param, no file info |
| GF_ROUTE_EVT_FILE | static file update (with predefined TOI), service ID is in evt_param |
| GF_ROUTE_EVT_DYN_SEG | Segment reception, identified through a file template, service ID is in evt_param |
| GF_ROUTE_EVT_DYN_SEG_FRAG | fragment reception (part of a segment), identified through a file template, service ID is in evt_param
|
| GF_ROUTE_EVT_FILE_DELETE | Object deletion (only for dynamic TOIs), used to notify the cache that an object is no longer available. File info only contains the filename being removed |
| anonymous enum |
| 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 *finfo) | on_event, | ||
| void * | udta | ||
| ) |
Creates a new ROUTE ATSC3.0 demultiplexer
| ifce | network interface to monitor, NULL for INADDR_ANY |
| sock_buffer_size | default buffer size for the udp sockets. If 0, uses 0x2000 |
| on_event | the user callback function |
| udta | the user data passed back by the callback |
| 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 *finfo) | on_event, | ||
| void * | udta | ||
| ) |
Creates a new ROUTE demultiplexer
| ip | IP address of ROUTE session |
| port | port of ROUTE session |
| ifce | network interface to monitor, NULL for INADDR_ANY |
| sock_buffer_size | default buffer size for the udp sockets. If 0, uses 0x2000 |
| on_event | the user callback function |
| udta | the user data passed back by the callback |
| void gf_route_dmx_del | ( | GF_ROUTEDmx * | routedmx | ) |
Deletes an ROUTE demultiplexer
| routedmx | the ROUTE demultiplexer to delete |
| GF_Err gf_route_dmx_process | ( | GF_ROUTEDmx * | routedmx | ) |
Processes demultiplexing, returns when nothing to read
| routedmx | the ROUTE demultiplexer |
Sets reordering on.
| routedmx | the ROUTE demultiplexer |
| force_reorder | if TRUE, the order flag in ROUTE/LCT is ignored and objects are gathered for the given time. Otherwise, if order flag is set in ROUTE/LCT, an object is considered done as soon as a new object starts |
| timeout_ms | maximum delay to wait before considering the object is done when ROUTE/LCT order is not used. A value of 0 implies waiting forever (default value is 5s). |
Allow segments to be sent while being downloaded.
| routedmx | the ROUTE demultiplexer |
| allow_progressive | if TRUE, fragments of segments will be sent during download |
Sets the service ID to tune into for ATSC 3.0
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to tune in. 0 means no service, 0xFFFFFFFF means all services and 0xFFFFFFFE means first service found |
| tune_others | if set, will tune all non-selected services to get the MPD, but won't receive any media data |
Gets the number of objects currently loaded in the service
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to query |
| GF_Err gf_route_dmx_remove_object_by_name | ( | GF_ROUTEDmx * | routedmx, |
| u32 | service_id, | ||
| char * | fileName, | ||
| Bool | purge_previous | ||
| ) |
Removes an object with a given filename
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to query |
| fileName | name of the file associated with the object |
| purge_previous | if set, indicates that all objects with the same TSI and a TOI less than TOI of the deleted object will be removed |
| GF_Err gf_route_dmx_force_keep_object_by_name | ( | GF_ROUTEDmx * | routedmx, |
| u32 | service_id, | ||
| char * | fileName | ||
| ) |
Flags an object to be kept until gf_route_dmx_remove_object_by_name is called
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to query |
| fileName | name of the file associated with the object |
Removes the first object loaded in the service
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to query |
Checks existence of a service for atsc 3.0
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to query |
| void gf_route_dmx_purge_objects | ( | GF_ROUTEDmx * | routedmx, |
| u32 | service_id | ||
| ) |
Removes all non-signaling objects (ie TSI!=0), keeping only init segments and currently/last downloaded objects
| routedmx | the ROUTE demultiplexer |
| service_id | ID of the service to cleanup |
| u64 gf_route_dmx_get_first_packet_time | ( | GF_ROUTEDmx * | routedmx | ) |
Gets high resolution system time clock of the first packet received
| routedmx | the ROUTE demultiplexer |
| u64 gf_route_dmx_get_last_packet_time | ( | GF_ROUTEDmx * | routedmx | ) |
Gets high resolution system time clock of the last packet received
| routedmx | the ROUTE demultiplexer |
| u64 gf_route_dmx_get_nb_packets | ( | GF_ROUTEDmx * | routedmx | ) |
Gets the number of packets received since start of the session, for all active services
| routedmx | the ROUTE demultiplexer |
| u64 gf_route_dmx_get_recv_bytes | ( | GF_ROUTEDmx * | routedmx | ) |
Gets the number of bytes received since start of the session, for all active services
| routedmx | the ROUTE demultiplexer |
| void gf_route_dmx_debug_tsi | ( | GF_ROUTEDmx * | routedmx, |
| u32 | tsi | ||
| ) |
Gather only objects with given TSI (for debug purposes)
| routedmx | the ROUTE demultiplexer |
| tsi | the target TSI, 0 for no filtering |
| void gf_route_dmx_set_service_udta | ( | GF_ROUTEDmx * | routedmx, |
| u32 | service_id, | ||
| void * | udta | ||
| ) |
Sets udta for given service id
| routedmx | the ROUTE demultiplexer |
| service_id | the target service |
| udta | the target user data |
| void * gf_route_dmx_get_service_udta | ( | GF_ROUTEDmx * | routedmx, |
| u32 | service_id | ||
| ) |
Gets udta for given service id
| routedmx | the ROUTE demultiplexer |
| service_id | the target service |