remove pass-thru mode
This commit is contained in:
parent
3799449bd1
commit
4e841009ff
1 changed files with 7 additions and 62 deletions
|
@ -42,54 +42,22 @@ typedef struct output_multicast {
|
|||
void *om_muxer;
|
||||
int om_fd;
|
||||
struct sockaddr_in om_dst;
|
||||
int om_ptr;
|
||||
char om_buf[MULTICAST_PKT_SIZ];
|
||||
} output_multicast_t;
|
||||
|
||||
|
||||
/**
|
||||
* Raw output directly from input, without internal remux
|
||||
*/
|
||||
static void
|
||||
iptv_output_raw(struct th_subscription *s, void *data, int len,
|
||||
th_stream_t *st, void *opaque)
|
||||
{
|
||||
output_multicast_t *om = opaque;
|
||||
|
||||
if(st->st_type == HTSTV_TABLE)
|
||||
return;
|
||||
|
||||
assert(len == 188);
|
||||
|
||||
memcpy(om->om_buf + om->om_ptr, data, 188);
|
||||
om->om_ptr += 188;
|
||||
|
||||
if(om->om_ptr != MULTICAST_PKT_SIZ)
|
||||
return;
|
||||
|
||||
sendto(om->om_fd, om->om_buf, om->om_ptr, 0,
|
||||
(struct sockaddr *)&om->om_dst, sizeof(struct sockaddr_in));
|
||||
|
||||
om->om_ptr = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Output internally remuxed content
|
||||
* Output MPEG TS
|
||||
*/
|
||||
void
|
||||
iptv_output_ts(void *opaque, th_subscription_t *s,
|
||||
uint8_t *pkt, int blocks, int64_t pcr)
|
||||
uint8_t *pkt, int blocks, int64_t pcr)
|
||||
{
|
||||
output_multicast_t *om = opaque;
|
||||
|
||||
sendto(om->om_fd, pkt, blocks * 188, 0,
|
||||
(struct sockaddr *)&om->om_dst, sizeof(struct sockaddr_in));
|
||||
(struct sockaddr *)&om->om_dst, sizeof(struct sockaddr_in));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Called when a subscription gets/loses access to a transport
|
||||
*/
|
||||
|
@ -98,40 +66,17 @@ iptv_subscription_callback(struct th_subscription *s,
|
|||
subscription_event_t event, void *opaque)
|
||||
{
|
||||
output_multicast_t *om = opaque;
|
||||
th_transport_t *t = s->ths_transport;
|
||||
|
||||
switch(event) {
|
||||
case TRANSPORT_AVAILABLE:
|
||||
assert(om->om_muxer == NULL);
|
||||
|
||||
switch(t->tht_type) {
|
||||
case TRANSPORT_IPTV:
|
||||
s->ths_raw_input = iptv_output_raw;
|
||||
break;
|
||||
|
||||
case TRANSPORT_V4L:
|
||||
case TRANSPORT_DVB:
|
||||
om->om_muxer = ts_muxer_init(s, iptv_output_ts, om, 0);
|
||||
ts_muxer_play(om->om_muxer, 0);
|
||||
break;
|
||||
|
||||
}
|
||||
om->om_muxer = ts_muxer_init(s, iptv_output_ts, om, 0);
|
||||
ts_muxer_play(om->om_muxer, 0);
|
||||
break;
|
||||
|
||||
case TRANSPORT_UNAVAILABLE:
|
||||
assert(om->om_muxer != NULL);
|
||||
|
||||
switch(t->tht_type) {
|
||||
case TRANSPORT_IPTV:
|
||||
s->ths_raw_input = NULL;
|
||||
break;
|
||||
|
||||
case TRANSPORT_V4L:
|
||||
case TRANSPORT_DVB:
|
||||
ts_muxer_deinit(om->om_muxer);
|
||||
om->om_muxer = NULL;
|
||||
break;
|
||||
}
|
||||
ts_muxer_deinit(om->om_muxer);
|
||||
om->om_muxer = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue