Skip to content

Commit

Permalink
Add init() functions in addition to alloc_init() functions.
Browse files Browse the repository at this point in the history
  • Loading branch information
Georgi Chorbadzhiyski committed Dec 12, 2011
1 parent f36a478 commit 968352d
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 13 deletions.
14 changes: 11 additions & 3 deletions eit_desc.c
Expand Up @@ -22,9 +22,7 @@ static void ts_eit_regenerate_packet_data(struct ts_eit *eit) {
free(ts_packets);
}

struct ts_eit *ts_eit_alloc_init(uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t table_id, uint8_t sec_number, uint8_t last_sec_number) {
struct ts_eit *eit = ts_eit_alloc();

struct ts_eit *ts_eit_init(struct ts_eit *eit, uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t table_id, uint8_t sec_number, uint8_t last_sec_number) {
eit->ts_header.pid = 0x12;
eit->ts_header.pusi = 1;
eit->ts_header.payload_field = 1;
Expand All @@ -48,13 +46,23 @@ struct ts_eit *ts_eit_alloc_init(uint16_t service_id, uint16_t transport_stream_
eit->segment_last_section_number = 0; // 8 bits
eit->last_table_id = table_id; // 8 bits

eit->streams_num = 0;

eit->initialized = 1;

ts_eit_regenerate_packet_data(eit);

return eit;
}

struct ts_eit *ts_eit_alloc_init(uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t table_id, uint8_t sec_number, uint8_t last_sec_number) {
struct ts_eit *eit = ts_eit_alloc();
if (!eit)
return NULL;

return ts_eit_init(eit, service_id, transport_stream_id, org_network_id, table_id, sec_number, last_sec_number);
}

struct ts_eit *ts_eit_alloc_init_pf(uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t sec_number, uint8_t last_sec_number) {
return ts_eit_alloc_init(service_id, transport_stream_id, org_network_id, 0x4e, sec_number, last_sec_number);
}
Expand Down
13 changes: 10 additions & 3 deletions nit_desc.c
Expand Up @@ -22,9 +22,7 @@ static void ts_nit_regenerate_packet_data(struct ts_nit *nit) {
free(ts_packets);
}

struct ts_nit *ts_nit_alloc_init(uint16_t network_id) {
struct ts_nit *nit = ts_nit_alloc();

struct ts_nit *ts_nit_init(struct ts_nit *nit, uint16_t network_id) {
nit->ts_header.pid = 0x10;
nit->ts_header.pusi = 1;
nit->ts_header.payload_field = 1;
Expand All @@ -45,13 +43,22 @@ struct ts_nit *ts_nit_alloc_init(uint16_t network_id) {
nit->reserved2 = 0xf;
nit->ts_loop_size = 0; // 16 bits

nit->streams_num = 0;

nit->initialized = 1;

ts_nit_regenerate_packet_data(nit);

return nit;
}

struct ts_nit *ts_nit_alloc_init(uint16_t network_id) {
struct ts_nit *nit = ts_nit_alloc();
if (!nit)
return NULL;
return ts_nit_init(nit, network_id);
}

int ts_nit_add_network_name_descriptor(struct ts_nit *nit, char *network_name) {
if (!network_name || strlen(network_name) > 255)
return 0;
Expand Down
13 changes: 10 additions & 3 deletions pat_desc.c
Expand Up @@ -22,9 +22,7 @@ static void ts_pat_regenerate_packet_data(struct ts_pat *pat) {
free(ts_packets);
}

struct ts_pat *ts_pat_alloc_init(uint16_t transport_stream_id) {
struct ts_pat *pat = ts_pat_alloc();

struct ts_pat *ts_pat_init(struct ts_pat *pat, uint16_t transport_stream_id) {
pat->ts_header.pid = 0x00;
pat->ts_header.pusi = 1;
pat->ts_header.payload_field = 1;
Expand All @@ -41,13 +39,22 @@ struct ts_pat *ts_pat_alloc_init(uint16_t transport_stream_id) {

pat->section_header->ts_id_number = transport_stream_id;

pat->programs_num = 0;

pat->initialized = 1;

ts_pat_regenerate_packet_data(pat);

return pat;
}

struct ts_pat *ts_pat_alloc_init(uint16_t transport_stream_id) {
struct ts_pat *pat = ts_pat_alloc();
if (!pat)
return NULL;
return ts_pat_init(pat, transport_stream_id);
}

int ts_pat_add_program(struct ts_pat *pat, uint16_t program, uint16_t pat_pid) {
int i;
if (pat->programs_max == pat->programs_num)
Expand Down
13 changes: 10 additions & 3 deletions sdt_desc.c
Expand Up @@ -22,9 +22,7 @@ static void ts_sdt_regenerate_packet_data(struct ts_sdt *sdt) {
free(ts_packets);
}

struct ts_sdt *ts_sdt_alloc_init(uint16_t org_network_id, uint16_t transport_stream_id) {
struct ts_sdt *sdt = ts_sdt_alloc();

struct ts_sdt *ts_sdt_init(struct ts_sdt *sdt, uint16_t org_network_id, uint16_t transport_stream_id) {
sdt->ts_header.pid = 0x11;
sdt->ts_header.pusi = 1;
sdt->ts_header.payload_field = 1;
Expand All @@ -43,13 +41,22 @@ struct ts_sdt *ts_sdt_alloc_init(uint16_t org_network_id, uint16_t transport_str
sdt->original_network_id = org_network_id; // 16 bits
sdt->reserved = 0xff; // 8 bits

sdt->streams_num = 0;

sdt->initialized = 1;

ts_sdt_regenerate_packet_data(sdt);

return sdt;
}

struct ts_sdt *ts_sdt_alloc_init(uint16_t org_network_id, uint16_t transport_stream_id) {
struct ts_sdt *sdt = ts_sdt_alloc();
if (!sdt)
return NULL;
return ts_sdt_init(sdt, org_network_id, transport_stream_id);
}

static int ts_sdt_add_stream(struct ts_sdt *sdt, uint16_t service_id, uint8_t *desc, uint8_t desc_size) {
if (sdt->streams_num == sdt->streams_max - 1 || desc_size == 0) {
FREE(desc);
Expand Down
8 changes: 8 additions & 0 deletions tdt_desc.c
Expand Up @@ -51,6 +51,14 @@ static struct ts_tdt *ts_tdt_init_empty(struct ts_tdt *tdt, time_t ts, int tot)
return tdt;
}

struct ts_tdt *ts_tdt_init(struct ts_tdt *tdt, time_t ts) {
return ts_tdt_init_empty(tdt, ts, 0);
}

struct ts_tdt *ts_tot_init(struct ts_tdt *tot, time_t ts) {
return ts_tdt_init_empty(tot, ts, 1);
}

struct ts_tdt *ts_tdt_alloc_init(time_t ts) {
return ts_tdt_init_empty(ts_tdt_alloc(), ts, 0);
}
Expand Down
7 changes: 6 additions & 1 deletion tsfuncs.h
Expand Up @@ -137,6 +137,7 @@ void ts_section_data_gen_ts_packets (struct ts_header *ts_header, uint8_t *

// PAT
struct ts_pat * ts_pat_alloc (void);
struct ts_pat * ts_pat_init (struct ts_pat *pat, uint16_t transport_stream_id);
struct ts_pat * ts_pat_alloc_init (uint16_t transport_stream_id);
struct ts_pat * ts_pat_push_packet (struct ts_pat *pat, uint8_t *ts_packet);
void ts_pat_clear (struct ts_pat *pat);
Expand Down Expand Up @@ -177,7 +178,6 @@ int ts_get_ecm_info_by_pid (struct ts_pmt *pmt, uint16_t *caid, uint16_t ca_p

// PMT
struct ts_pmt * ts_pmt_alloc (void);
struct ts_pmt * ts_pmt_alloc_init (uint16_t org_network_id, uint16_t transport_stream_id);
struct ts_pmt * ts_pmt_push_packet (struct ts_pmt *pmt, uint8_t *ts_packet);
void ts_pmt_clear (struct ts_pmt *pmt);
void ts_pmt_free (struct ts_pmt **pmt);
Expand All @@ -192,6 +192,7 @@ int ts_pmt_is_same (struct ts_pmt *pmt1, struct ts_pmt *pmt2);

// NIT
struct ts_nit * ts_nit_alloc (void);
struct ts_nit * ts_nit_init (struct ts_nit *nit, uint16_t network_id);
struct ts_nit * ts_nit_alloc_init (uint16_t network_id);
struct ts_nit * ts_nit_push_packet (struct ts_nit *nit, uint8_t *ts_packet);
void ts_nit_clear (struct ts_nit *nit);
Expand All @@ -210,6 +211,7 @@ int ts_nit_is_same (struct ts_nit *nit1, struct ts_nit *nit2);

// SDT
struct ts_sdt * ts_sdt_alloc (void);
struct ts_sdt * ts_sdt_init (struct ts_sdt *sdt, uint16_t org_network_id, uint16_t transport_stream_id);
struct ts_sdt * ts_sdt_alloc_init (uint16_t org_network_id, uint16_t transport_stream_id);
struct ts_sdt * ts_sdt_push_packet (struct ts_sdt *sdt, uint8_t *ts_packet);
void ts_sdt_clear (struct ts_sdt *sdt);
Expand All @@ -225,6 +227,7 @@ int ts_sdt_is_same (struct ts_sdt *sdt1, struct ts_sdt *sdt2);

// EIT
struct ts_eit * ts_eit_alloc (void);
struct ts_eit * ts_eit_init (struct ts_eit *eit, uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t table_id, uint8_t sec_number, uint8_t last_sec_number);
struct ts_eit * ts_eit_alloc_init (uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t table_id, uint8_t sec_number, uint8_t last_sec_number);
struct ts_eit * ts_eit_alloc_init_pf (uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t sec_number, uint8_t last_sec_number); // Shortcut using table_id 0x4e
struct ts_eit * ts_eit_alloc_init_schedule (uint16_t service_id, uint16_t transport_stream_id, uint16_t org_network_id, uint8_t sec_number, uint8_t last_sec_number); // Shortcut using table_id 0x50
Expand All @@ -247,6 +250,8 @@ int ts_eit_is_same (struct ts_eit *eit1, struct ts_eit *eit2);

// TDT
struct ts_tdt * ts_tdt_alloc(void);
struct ts_tdt * ts_tdt_init (struct ts_tdt *tdt, time_t ts);
struct ts_tdt * ts_tot_init (struct ts_tdt *tot, time_t ts);
struct ts_tdt * ts_tdt_alloc_init (time_t ts);
struct ts_tdt * ts_tot_alloc_init (time_t ts);
void ts_tdt_clear (struct ts_tdt *tdt);
Expand Down

0 comments on commit 968352d

Please sign in to comment.