iptv: added some missing functions
This commit is contained in:
parent
646bfe3e88
commit
523c47de37
4 changed files with 55 additions and 23 deletions
|
@ -36,8 +36,9 @@ typedef struct mpegts_input mpegts_input_t;
|
|||
typedef struct mpegts_table_feed mpegts_table_feed_t;
|
||||
|
||||
/* Lists */
|
||||
typedef TAILQ_HEAD(mpegts_mux_queue,mpegts_mux) mpegts_mux_queue_t;
|
||||
typedef LIST_HEAD (mpegts_mux_list,mpegts_mux) mpegts_mux_list_t;
|
||||
typedef LIST_HEAD (mpegts_input_list,mpegts_input) mpegts_input_list_t;
|
||||
typedef TAILQ_HEAD(mpegts_mux_queue,mpegts_mux) mpegts_mux_queue_t;
|
||||
typedef LIST_HEAD (mpegts_mux_list,mpegts_mux) mpegts_mux_list_t;
|
||||
TAILQ_HEAD(mpegts_table_feed_queue, mpegts_table_feed);
|
||||
|
||||
/* **************************************************************************
|
||||
|
@ -125,7 +126,6 @@ struct mpegts_network
|
|||
*/
|
||||
|
||||
char *mn_network_name;
|
||||
//uint16_t mn_network_id; // ONID/NID??
|
||||
|
||||
/*
|
||||
* Scanning
|
||||
|
@ -135,6 +135,11 @@ struct mpegts_network
|
|||
int mn_initial_scan_num;
|
||||
gtimer_t mn_initial_scan_timer;
|
||||
|
||||
/*
|
||||
* Inputs
|
||||
*/
|
||||
mpegts_input_list_t mn_inputs;
|
||||
|
||||
/*
|
||||
* Multiplexes
|
||||
*/
|
||||
|
@ -354,8 +359,8 @@ struct mpegts_input
|
|||
|
||||
LIST_ENTRY(mpegts_input) mi_global_link;
|
||||
|
||||
|
||||
mpegts_network_t *mi_network; // TODO: this may need altering for DVB-S
|
||||
mpegts_network_t *mi_network;
|
||||
LIST_ENTRY(mpegts_input) mi_network_link;
|
||||
|
||||
LIST_HEAD(,mpegts_mux_instance) mi_mux_active;
|
||||
|
||||
|
@ -382,7 +387,7 @@ struct mpegts_input
|
|||
*/
|
||||
|
||||
int (*mi_start_mux) (mpegts_input_t*,mpegts_mux_instance_t*);
|
||||
void (*mi_stop_mux) (mpegts_input_t*);
|
||||
void (*mi_stop_mux) (mpegts_input_t*,mpegts_mux_instance_t*);
|
||||
void (*mi_open_service) (mpegts_input_t*,mpegts_service_t*);
|
||||
void (*mi_close_service) (mpegts_input_t*,mpegts_service_t*);
|
||||
int (*mi_is_free) (mpegts_input_t*);
|
||||
|
@ -411,6 +416,8 @@ mpegts_network_t *mpegts_network_create0
|
|||
void mpegts_network_schedule_initial_scan
|
||||
( mpegts_network_t *mm );
|
||||
|
||||
void mpegts_network_add_input ( mpegts_network_t *mn, mpegts_input_t *mi );
|
||||
|
||||
mpegts_mux_t *mpegts_mux_create0
|
||||
( mpegts_mux_t *mm, const idclass_t *class, const char *uuid,
|
||||
mpegts_network_t *mn, uint16_t onid, uint16_t tsid );
|
||||
|
|
|
@ -161,7 +161,7 @@ iptv_input_start_mux ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi )
|
|||
}
|
||||
|
||||
static void
|
||||
iptv_input_stop_mux ( mpegts_input_t *mi )
|
||||
iptv_input_stop_mux ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -246,11 +246,19 @@ const idclass_t iptv_network_class = {
|
|||
}
|
||||
};
|
||||
|
||||
static mpegts_mux_t *
|
||||
iptv_network_create_mux
|
||||
( mpegts_mux_t *mm, uint16_t onid, uint16_t tsid, void *aux )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static mpegts_service_t *
|
||||
iptv_network_create_service
|
||||
( mpegts_mux_t *mm, uint16_t sid, uint16_t pmt_pid )
|
||||
{
|
||||
return NULL;
|
||||
return (mpegts_service_t*)
|
||||
iptv_service_create(NULL, (iptv_mux_t*)mm, sid, pmt_pid);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -259,30 +267,22 @@ iptv_network_create_service
|
|||
void iptv_init ( void )
|
||||
{
|
||||
/* Init Input */
|
||||
#if 0
|
||||
mpegts_input_init((mpegts_input_t*)&iptv_input,
|
||||
&itpv_input_class, NULL);
|
||||
#endif
|
||||
mpegts_input_create0((mpegts_input_t*)&iptv_input,
|
||||
&iptv_input_class, NULL);
|
||||
iptv_input.mi_start_mux = iptv_input_start_mux;
|
||||
iptv_input.mi_stop_mux = iptv_input_stop_mux;
|
||||
iptv_input.mi_is_free = iptv_input_is_free;
|
||||
iptv_input.mi_current_weight = iptv_input_current_weight;
|
||||
#if 0 // Use defaults
|
||||
iptv_input.mi_open_service = iptv_input_open_service;
|
||||
iptv_input.mi_close_sevice = iptv_input_close_service;
|
||||
#endif
|
||||
|
||||
/* Init Network */
|
||||
#if 0
|
||||
mpegts_network_init((mpegts_network_t*)&iptv_network,
|
||||
&iptv_network_class, NULL);
|
||||
#endif
|
||||
iptv_network.mn_network_name = strdup("IPTV Network");
|
||||
mpegts_network_create0((mpegts_network_t*)&iptv_network,
|
||||
&iptv_network_class, NULL, "IPTV Network");
|
||||
iptv_network.mn_create_mux = iptv_network_create_mux;
|
||||
iptv_network.mn_create_service = iptv_network_create_service;
|
||||
|
||||
/* Link */
|
||||
iptv_input.mi_network = (mpegts_network_t*)&iptv_network;
|
||||
//iptv_network.mn_input = (mpegts_input_t*)&iptv_input;
|
||||
mpegts_network_add_input((mpegts_network_t*)&iptv_network,
|
||||
(mpegts_input_t*)&iptv_input);
|
||||
|
||||
/* Setup thread */
|
||||
// TODO: could set this up only when needed
|
||||
|
|
|
@ -34,6 +34,16 @@ const idclass_t mpegts_input_class =
|
|||
}
|
||||
};
|
||||
|
||||
static void
|
||||
mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s )
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
mpegts_input_close_service ( mpegts_input_t *mi, mpegts_service_t *s )
|
||||
{
|
||||
}
|
||||
|
||||
size_t
|
||||
mpegts_input_recv_packets
|
||||
( mpegts_input_t *mi, mpegts_mux_instance_t *mmi,
|
||||
|
@ -208,6 +218,14 @@ mpegts_input_create0
|
|||
( mpegts_input_t *mi, const idclass_t *class, const char *uuid )
|
||||
{
|
||||
idnode_insert(&mi->mi_id, uuid, class);
|
||||
|
||||
/* Defaults */
|
||||
mi->mi_start_mux = NULL;
|
||||
mi->mi_stop_mux = NULL;
|
||||
mi->mi_open_service = mpegts_input_open_service;
|
||||
mi->mi_close_service = mpegts_input_close_service;
|
||||
mi->mi_is_free = mpegts_input_is_free;
|
||||
mi->mi_current_weight = mpegts_input_current_weight;
|
||||
|
||||
/* Init mutex */
|
||||
pthread_mutex_init(&mi->mi_delivery_mutex, NULL);
|
||||
|
|
|
@ -50,6 +50,13 @@ mpegts_network_schedule_initial_scan ( mpegts_network_t *mn )
|
|||
gtimer_arm(&mn->mn_initial_scan_timer, mpegts_network_initial_scan, mn, 0);
|
||||
}
|
||||
|
||||
void
|
||||
mpegts_network_add_input ( mpegts_network_t *mn, mpegts_input_t *mi )
|
||||
{
|
||||
mi->mi_network = mn;
|
||||
LIST_INSERT_HEAD(&mn->mn_inputs, mi, mi_network_link);
|
||||
}
|
||||
|
||||
mpegts_network_t *
|
||||
mpegts_network_create0
|
||||
( mpegts_network_t *mn, const idclass_t *idc, const char *uuid,
|
||||
|
|
Loading…
Add table
Reference in a new issue