libgpac
Documentation of the core library of GPAC
mux_ts.c File Reference
#include <gpac/filters.h>
#include <gpac/constants.h>
#include <gpac/mpegts.h>
#include <gpac/iso639.h>
#include <gpac/webvtt.h>
+ Include dependency graph for mux_ts.c:

Data Structures

struct  TS_SIDX
 
struct  GF_TSMuxCtx
 
struct  TEMIDesc
 
struct  M2Pid
 

Macros

#define M2TS_FILE_EXTS   "ts|m2t|mts|dmb|trp"
 
#define M2TS_MIMES   "video/mpeg-2|video/mp2t|video/mpeg|audio/mp2t"
 
#define OFFS(_n)   #_n, offsetof(GF_TSMuxCtx, _n)
 

Enumerations

enum  { TEMI_TC64_AUTO =0 , TEMI_TC64_OFF , TEMI_TC64_ALWAYS }
 
enum  { IN_TEMI_DROP =0 , IN_TEMI_FWD , IN_TEMI_NTP }
 
enum  { M2TS_EODS_NO =0 , M2TS_EODS_FOUND , M2TS_EODS_FORCED , M2TS_EODS_LLHAS }
 

Functions

void mux_assign_mime_file_ext (GF_FilterPid *ipid, GF_FilterPid *opid, const char *file_exts, const char *mime_types, const char *def_ext)
 
static GF_Err tsmux_format_af_descriptor (GF_BitStream *bs, Bool is_realtime, u32 timeline_id, u64 timecode, u32 timescale, u32 mode_64bits, u64 ntp, const char *temi_url, u32 temi_delay, u32 *last_url_time, Bool is_reload, Bool is_splicing, GF_Fraction *announce, Bool is_paused, Bool is_discontinuity)
 
GF_SLConfigtsmux_get_sl_config (GF_TSMuxCtx *ctx, u32 timescale, GF_SLConfig *slc)
 
static void tsmux_rewrite_odf (GF_TSMuxCtx *ctx, GF_ESIPacket *es_pck)
 
static void tsmux_check_mpd_start_time (GF_TSMuxCtx *ctx, GF_FilterPacket *pck)
 
static u32 tsmux_stream_process_scte35 (GF_M2TS_Mux *muxer, GF_M2TS_Mux_Stream *stream)
 
static GF_Err tsmux_esi_ctrl (GF_ESInterface *ifce, u32 act_type, void *param)
 
void update_m4sys_info (GF_TSMuxCtx *ctx, GF_M2TS_Mux_Program *prog)
 
static Bool tsmux_setup_esi (GF_TSMuxCtx *ctx, GF_M2TS_Mux_Program *prog, M2Pid *tspid, u32 stream_type)
 
static void tsmux_setup_temi (GF_TSMuxCtx *ctx, M2Pid *tspid)
 
static void tsmux_del_stream (M2Pid *tspid)
 
static GF_Err tsmux_configure_pid (GF_Filter *filter, GF_FilterPid *pid, Bool is_remove)
 
static void tsmux_assign_pcr (GF_TSMuxCtx *ctx)
 
static Bool tsmux_init_buffering (GF_Filter *filter, GF_TSMuxCtx *ctx)
 
static void tsmux_send_seg_event (GF_Filter *filter, GF_TSMuxCtx *ctx)
 
static void tsmux_insert_sidx (GF_TSMuxCtx *ctx, Bool final_flush)
 
static void tsmux_flush_frag_llhas (GF_TSMuxCtx *ctx, Bool is_last)
 
static void ts_mux_on_packet_del (GF_Filter *filter, GF_FilterPid *pid, GF_FilterPacket *pck)
 
static GF_Err tsmux_process (GF_Filter *filter)
 
static GF_Err tsmux_initialize (GF_Filter *filter)
 
static void tsmux_finalize (GF_Filter *filter)
 
static Bool tsmux_process_event (GF_Filter *filter, const GF_FilterEvent *evt)
 
const GF_FilterRegister * m2tsmx_register (GF_FilterSession *session)
 

Variables

static const GF_FilterCapability TSMuxCaps []
 
static const GF_FilterArgs TSMuxArgs []
 
GF_FilterRegister TSMuxRegister
 

Data Structure Documentation

◆ TS_SIDX

struct TS_SIDX
Data Fields
u64 sap_time
u64 offset
u32 nb_pck
u32 sap_type
u64 min_pts_plus_one
u64 max_pts

◆ GF_TSMuxCtx

struct GF_TSMuxCtx
+ Collaboration diagram for GF_TSMuxCtx:
Data Fields
u32 pmt_id
u32 pmt_rate
u32 pmt_version
u32 sdt_rate
u32 breq
u32 mpeg4
u64 pcr_offset
u64 first_pts
u32 rate
u32 pat_rate
u32 repeat_rate
u32 repeat_img
u32 max_pcr
u32 nb_pack
u32 sid
u32 bifs_pes
u32 pes_pack
Bool flush_rap
Bool realtime
Bool pcr_only
Bool disc
Bool latm
s64 pcr_init
char * name
char * provider
char * temi
u32 log_freq
s32 subs_sidx
Bool keepts
GF_Fraction cdur
u32 temi_fwd
GF_FilterPid * opid
GF_FilterPid * idx_opid
GF_Filter * idx_filter
GF_M2TS_Mux * mux
GF_List * pids
Bool check_pcr
Bool update_mux
char * pack_buffer
u64 nb_pck
Bool init_buffering
u32 last_log_time
Bool pmt_update_pending
Bool cdur_overwrite
GF_M2TS_Mux_Stream * scte35_stream
u8 * scte35_payload
u32 scte35_size
u32 dash_mode
Bool init_dash
u32 dash_seg_num
Bool wait_dash_flush
Bool last_is_eods_flush
Bool dash_file_switch
Bool next_is_start
u32 nb_pck_in_seg
u64 pck_start_idx
char dash_file_name[GF_MAX_PATH]
char idx_file_name[GF_MAX_PATH]
char llhas_template[GF_MAX_PATH]
u32 nb_sidx_entries
u32 nb_sidx_alloc
TS_SIDX * sidx_entries
GF_BitStream * idx_bs
u32 nb_pck_in_file
u32 nb_pck_first_sidx
u64 total_bytes_in
u32 nb_suspended
u32 cur_file_idx_plus_one
char * cur_file_suffix
Bool notify_filename
Bool is_playing
Double start_range
struct __tsmx_pid * ref_pid
Bool wait_llhas_flush
u32 llhas_mode
Bool next_is_llhas_start
u32 frag_num
u32 frag_offset
u32 frag_size
u32 frag_duration
Bool frag_has_intra
Bool force_seg_sync
u32 pending_packets
u32 sync_init_time
GF_Fraction64 dash_seg_start

◆ TEMIDesc

struct TEMIDesc
Data Fields
u32 id
u32 delay
u32 timescale
u64 offset
u64 init_val
char * url
Bool ntp
Bool use_init_val
u32 mode_64bits
u64 cts_at_init_val_plus_one

◆ M2Pid

struct M2Pid
+ Collaboration diagram for M2Pid:
Data Fields
GF_ESInterface esi
GF_FilterPid * ipid
GF_M2TS_Mux_Stream * mstream
GF_M2TS_Mux_Program * prog
u32 sid
u32 codec_id
u32 pmt_pid
u32 nb_pck
Bool is_repeat
u32 nb_repeat_last
GF_TSMuxCtx * ctx
u32 last_cv
s64 media_delay
s64 max_media_skip
Bool done
GF_List * temi_descs
u32 last_temi_url
u8 * af_data
u32 af_data_alloc
GF_BitStream * temi_af_bs
Bool rewrite_odf
u32 has_seen_eods
u32 pck_duration
u64 loop_ts_offset
u64 last_dts
u32 last_dur
u8 * pck_data_buf
u32 suspended
u64 llhas_dts_init
Bool is_sparse

Macro Definition Documentation

◆ M2TS_FILE_EXTS

#define M2TS_FILE_EXTS   "ts|m2t|mts|dmb|trp"

◆ M2TS_MIMES

#define M2TS_MIMES   "video/mpeg-2|video/mp2t|video/mpeg|audio/mp2t"

◆ OFFS

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

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
TEMI_TC64_AUTO 
TEMI_TC64_OFF 
TEMI_TC64_ALWAYS 

◆ anonymous enum

anonymous enum
Enumerator
IN_TEMI_DROP 
IN_TEMI_FWD 
IN_TEMI_NTP 

◆ anonymous enum

anonymous enum
Enumerator
M2TS_EODS_NO 
M2TS_EODS_FOUND 
M2TS_EODS_FORCED 
M2TS_EODS_LLHAS 

Function Documentation

◆ mux_assign_mime_file_ext()

void mux_assign_mime_file_ext ( GF_FilterPid *  ipid,
GF_FilterPid *  opid,
const char *  file_exts,
const char *  mime_types,
const char *  def_ext 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_format_af_descriptor()

static GF_Err tsmux_format_af_descriptor ( GF_BitStream *  bs,
Bool  is_realtime,
u32  timeline_id,
u64  timecode,
u32  timescale,
u32  mode_64bits,
u64  ntp,
const char *  temi_url,
u32  temi_delay,
u32 last_url_time,
Bool  is_reload,
Bool  is_splicing,
GF_Fraction announce,
Bool  is_paused,
Bool  is_discontinuity 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_get_sl_config()

GF_SLConfig* tsmux_get_sl_config ( GF_TSMuxCtx ctx,
u32  timescale,
GF_SLConfig slc 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_rewrite_odf()

static void tsmux_rewrite_odf ( GF_TSMuxCtx ctx,
GF_ESIPacket es_pck 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_check_mpd_start_time()

static void tsmux_check_mpd_start_time ( GF_TSMuxCtx ctx,
GF_FilterPacket *  pck 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_stream_process_scte35()

static u32 tsmux_stream_process_scte35 ( GF_M2TS_Mux *  muxer,
GF_M2TS_Mux_Stream stream 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_esi_ctrl()

static GF_Err tsmux_esi_ctrl ( GF_ESInterface ifce,
u32  act_type,
void *  param 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update_m4sys_info()

void update_m4sys_info ( GF_TSMuxCtx ctx,
GF_M2TS_Mux_Program *  prog 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_setup_esi()

static Bool tsmux_setup_esi ( GF_TSMuxCtx ctx,
GF_M2TS_Mux_Program *  prog,
M2Pid tspid,
u32  stream_type 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_setup_temi()

static void tsmux_setup_temi ( GF_TSMuxCtx ctx,
M2Pid tspid 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_del_stream()

static void tsmux_del_stream ( M2Pid tspid)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_configure_pid()

static GF_Err tsmux_configure_pid ( GF_Filter *  filter,
GF_FilterPid *  pid,
Bool  is_remove 
)
static
+ Here is the call graph for this function:

◆ tsmux_assign_pcr()

static void tsmux_assign_pcr ( GF_TSMuxCtx ctx)
static
+ Here is the caller graph for this function:

◆ tsmux_init_buffering()

static Bool tsmux_init_buffering ( GF_Filter *  filter,
GF_TSMuxCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_send_seg_event()

static void tsmux_send_seg_event ( GF_Filter *  filter,
GF_TSMuxCtx ctx 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_insert_sidx()

static void tsmux_insert_sidx ( GF_TSMuxCtx ctx,
Bool  final_flush 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_flush_frag_llhas()

static void tsmux_flush_frag_llhas ( GF_TSMuxCtx ctx,
Bool  is_last 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ts_mux_on_packet_del()

static void ts_mux_on_packet_del ( GF_Filter *  filter,
GF_FilterPid *  pid,
GF_FilterPacket *  pck 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tsmux_process()

static GF_Err tsmux_process ( GF_Filter *  filter)
static
+ Here is the call graph for this function:

◆ tsmux_initialize()

static GF_Err tsmux_initialize ( GF_Filter *  filter)
static
+ Here is the call graph for this function:

◆ tsmux_finalize()

static void tsmux_finalize ( GF_Filter *  filter)
static
+ Here is the call graph for this function:

◆ tsmux_process_event()

static Bool tsmux_process_event ( GF_Filter *  filter,
const GF_FilterEvent *  evt 
)
static
+ Here is the call graph for this function:

◆ m2tsmx_register()

const GF_FilterRegister* m2tsmx_register ( GF_FilterSession *  session)

Variable Documentation

◆ TSMuxCaps

const GF_FilterCapability TSMuxCaps[]
static

◆ TSMuxArgs

const GF_FilterArgs TSMuxArgs[]
static

◆ TSMuxRegister

GF_FilterRegister TSMuxRegister