int sig_lock;
pthread_mutex_t lock;
http_connection_t *hc;
- uint8_t *table_data;
- int table_data_len;
+ sbuf_t table_data;
void (*no_data_cb)(void *opaque);
void *no_data_opaque;
} satip_rtp_session_t;
ol = dvb_table_append_crc32(out, ol, sizeof(out));
- if (ol > 0 && (l = dvb_table_remux(mt, out, ol, &ob)) > 0) {
- rtp->table_data = ob;
- rtp->table_data_len = l;
- }
+ if (ol > 0 && (l = dvb_table_remux(mt, out, ol, &ob)) > 0)
+ sbuf_append(&rtp->table_data, ob, l);
}
static void
TAILQ_FOREACH(tbl, &rtp->pmt_tables, link)
if (tbl->pid == pid) {
dvb_table_parse(&tbl->tbl, "-", data, 188, 1, 0, satip_rtp_pmt_cb);
- if (rtp->table_data && rtp->table_data_len) {
- for (i = r = 0; i < rtp->table_data_len; i += 188) {
- r = satip_rtp_append_data(rtp, &v, rtp->table_data + i);
+ if (rtp->table_data.sb_ptr > 0) {
+ for (i = r = 0; i < rtp->table_data.sb_ptr; i += 188) {
+ r = satip_rtp_append_data(rtp, &v, rtp->table_data.sb_data + i);
if (r)
break;
}
- free(rtp->table_data);
- rtp->table_data = NULL;
- rtp->table_data_len = 0;
+ sbuf_reset(&rtp->table_data, 10*188);
if (r)
return r;
}
TAILQ_FOREACH(tbl, &rtp->pmt_tables, link)
if (tbl->pid == pid) {
dvb_table_parse(&tbl->tbl, "-", data, 188, 1, 0, satip_rtp_pmt_cb);
- if (rtp->table_data && rtp->table_data_len) {
- r = satip_rtp_append_tcp_data(rtp, rtp->table_data, rtp->table_data_len);
- free(rtp->table_data);
- rtp->table_data = NULL;
- rtp->table_data_len = 0;
+ if (rtp->table_data.sb_ptr) {
+ r = satip_rtp_append_tcp_data(rtp, rtp->table_data.sb_data, rtp->table_data.sb_ptr);
+ sbuf_reset(&rtp->table_data, 10*188);
if (r)
return -1;
}