Browse Source

Add init() functions in addition to alloc_init() functions.

Georgi Chorbadzhiyski 12 years ago
parent
commit
968352d1ec
6 changed files with 55 additions and 13 deletions
  1. 11
    3
      eit_desc.c
  2. 10
    3
      nit_desc.c
  3. 10
    3
      pat_desc.c
  4. 10
    3
      sdt_desc.c
  5. 8
    0
      tdt_desc.c
  6. 6
    1
      tsfuncs.h

+ 11
- 3
eit_desc.c View File

22
 	free(ts_packets);
22
 	free(ts_packets);
23
 }
23
 }
24
 
24
 
25
-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) {
26
-	struct ts_eit *eit = ts_eit_alloc();
27
-
25
+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) {
28
 	eit->ts_header.pid            = 0x12;
26
 	eit->ts_header.pid            = 0x12;
29
 	eit->ts_header.pusi           = 1;
27
 	eit->ts_header.pusi           = 1;
30
 	eit->ts_header.payload_field  = 1;
28
 	eit->ts_header.payload_field  = 1;
48
 	eit->segment_last_section_number = 0;						// 8 bits
46
 	eit->segment_last_section_number = 0;						// 8 bits
49
 	eit->last_table_id               = table_id;				// 8 bits
47
 	eit->last_table_id               = table_id;				// 8 bits
50
 
48
 
49
+	eit->streams_num = 0;
50
+
51
 	eit->initialized = 1;
51
 	eit->initialized = 1;
52
 
52
 
53
 	ts_eit_regenerate_packet_data(eit);
53
 	ts_eit_regenerate_packet_data(eit);
55
 	return eit;
55
 	return eit;
56
 }
56
 }
57
 
57
 
58
+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) {
59
+	struct ts_eit *eit = ts_eit_alloc();
60
+	if (!eit)
61
+		return NULL;
62
+
63
+	return ts_eit_init(eit, service_id, transport_stream_id, org_network_id, table_id, sec_number, last_sec_number);
64
+}
65
+
58
 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) {
66
 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) {
59
 	return ts_eit_alloc_init(service_id, transport_stream_id, org_network_id, 0x4e, sec_number, last_sec_number);
67
 	return ts_eit_alloc_init(service_id, transport_stream_id, org_network_id, 0x4e, sec_number, last_sec_number);
60
 }
68
 }

+ 10
- 3
nit_desc.c View File

22
 	free(ts_packets);
22
 	free(ts_packets);
23
 }
23
 }
24
 
24
 
25
-struct ts_nit *ts_nit_alloc_init(uint16_t network_id) {
26
-	struct ts_nit *nit = ts_nit_alloc();
27
-
25
+struct ts_nit *ts_nit_init(struct ts_nit *nit, uint16_t network_id) {
28
 	nit->ts_header.pid            = 0x10;
26
 	nit->ts_header.pid            = 0x10;
29
 	nit->ts_header.pusi           = 1;
27
 	nit->ts_header.pusi           = 1;
30
 	nit->ts_header.payload_field  = 1;
28
 	nit->ts_header.payload_field  = 1;
45
 	nit->reserved2           = 0xf;
43
 	nit->reserved2           = 0xf;
46
 	nit->ts_loop_size        = 0;		// 16 bits
44
 	nit->ts_loop_size        = 0;		// 16 bits
47
 
45
 
46
+	nit->streams_num = 0;
47
+
48
 	nit->initialized = 1;
48
 	nit->initialized = 1;
49
 
49
 
50
 	ts_nit_regenerate_packet_data(nit);
50
 	ts_nit_regenerate_packet_data(nit);
52
 	return nit;
52
 	return nit;
53
 }
53
 }
54
 
54
 
55
+struct ts_nit *ts_nit_alloc_init(uint16_t network_id) {
56
+	struct ts_nit *nit = ts_nit_alloc();
57
+	if (!nit)
58
+		return NULL;
59
+	return ts_nit_init(nit, network_id);
60
+}
61
+
55
 int ts_nit_add_network_name_descriptor(struct ts_nit *nit, char *network_name) {
62
 int ts_nit_add_network_name_descriptor(struct ts_nit *nit, char *network_name) {
56
 	if (!network_name || strlen(network_name) > 255)
63
 	if (!network_name || strlen(network_name) > 255)
57
 		return 0;
64
 		return 0;

+ 10
- 3
pat_desc.c View File

22
 	free(ts_packets);
22
 	free(ts_packets);
23
 }
23
 }
24
 
24
 
25
-struct ts_pat *ts_pat_alloc_init(uint16_t transport_stream_id) {
26
-	struct ts_pat *pat = ts_pat_alloc();
27
-
25
+struct ts_pat *ts_pat_init(struct ts_pat *pat, uint16_t transport_stream_id) {
28
 	pat->ts_header.pid            = 0x00;
26
 	pat->ts_header.pid            = 0x00;
29
 	pat->ts_header.pusi           = 1;
27
 	pat->ts_header.pusi           = 1;
30
 	pat->ts_header.payload_field  = 1;
28
 	pat->ts_header.payload_field  = 1;
41
 
39
 
42
 	pat->section_header->ts_id_number             = transport_stream_id;
40
 	pat->section_header->ts_id_number             = transport_stream_id;
43
 
41
 
42
+	pat->programs_num = 0;
43
+
44
 	pat->initialized = 1;
44
 	pat->initialized = 1;
45
 
45
 
46
 	ts_pat_regenerate_packet_data(pat);
46
 	ts_pat_regenerate_packet_data(pat);
48
 	return pat;
48
 	return pat;
49
 }
49
 }
50
 
50
 
51
+struct ts_pat *ts_pat_alloc_init(uint16_t transport_stream_id) {
52
+	struct ts_pat *pat = ts_pat_alloc();
53
+	if (!pat)
54
+		return NULL;
55
+	return ts_pat_init(pat, transport_stream_id);
56
+}
57
+
51
 int ts_pat_add_program(struct ts_pat *pat, uint16_t program, uint16_t pat_pid) {
58
 int ts_pat_add_program(struct ts_pat *pat, uint16_t program, uint16_t pat_pid) {
52
 	int i;
59
 	int i;
53
 	if (pat->programs_max == pat->programs_num)
60
 	if (pat->programs_max == pat->programs_num)

+ 10
- 3
sdt_desc.c View File

22
 	free(ts_packets);
22
 	free(ts_packets);
23
 }
23
 }
24
 
24
 
25
-struct ts_sdt *ts_sdt_alloc_init(uint16_t org_network_id, uint16_t transport_stream_id) {
26
-	struct ts_sdt *sdt = ts_sdt_alloc();
27
-
25
+struct ts_sdt *ts_sdt_init(struct ts_sdt *sdt, uint16_t org_network_id, uint16_t transport_stream_id) {
28
 	sdt->ts_header.pid            = 0x11;
26
 	sdt->ts_header.pid            = 0x11;
29
 	sdt->ts_header.pusi           = 1;
27
 	sdt->ts_header.pusi           = 1;
30
 	sdt->ts_header.payload_field  = 1;
28
 	sdt->ts_header.payload_field  = 1;
43
 	sdt->original_network_id = org_network_id;	// 16 bits
41
 	sdt->original_network_id = org_network_id;	// 16 bits
44
 	sdt->reserved            = 0xff;			// 8 bits
42
 	sdt->reserved            = 0xff;			// 8 bits
45
 
43
 
44
+	sdt->streams_num = 0;
45
+
46
 	sdt->initialized = 1;
46
 	sdt->initialized = 1;
47
 
47
 
48
 	ts_sdt_regenerate_packet_data(sdt);
48
 	ts_sdt_regenerate_packet_data(sdt);
50
 	return sdt;
50
 	return sdt;
51
 }
51
 }
52
 
52
 
53
+struct ts_sdt *ts_sdt_alloc_init(uint16_t org_network_id, uint16_t transport_stream_id) {
54
+	struct ts_sdt *sdt = ts_sdt_alloc();
55
+	if (!sdt)
56
+		return NULL;
57
+	return ts_sdt_init(sdt, org_network_id, transport_stream_id);
58
+}
59
+
53
 static int ts_sdt_add_stream(struct ts_sdt *sdt, uint16_t service_id, uint8_t *desc, uint8_t desc_size) {
60
 static int ts_sdt_add_stream(struct ts_sdt *sdt, uint16_t service_id, uint8_t *desc, uint8_t desc_size) {
54
 	if (sdt->streams_num == sdt->streams_max - 1 || desc_size == 0) {
61
 	if (sdt->streams_num == sdt->streams_max - 1 || desc_size == 0) {
55
 		FREE(desc);
62
 		FREE(desc);

+ 8
- 0
tdt_desc.c View File

51
 	return tdt;
51
 	return tdt;
52
 }
52
 }
53
 
53
 
54
+struct ts_tdt *ts_tdt_init(struct ts_tdt *tdt, time_t ts) {
55
+	return ts_tdt_init_empty(tdt, ts, 0);
56
+}
57
+
58
+struct ts_tdt *ts_tot_init(struct ts_tdt *tot, time_t ts) {
59
+	return ts_tdt_init_empty(tot, ts, 1);
60
+}
61
+
54
 struct ts_tdt *ts_tdt_alloc_init(time_t ts) {
62
 struct ts_tdt *ts_tdt_alloc_init(time_t ts) {
55
 	return ts_tdt_init_empty(ts_tdt_alloc(), ts, 0);
63
 	return ts_tdt_init_empty(ts_tdt_alloc(), ts, 0);
56
 }
64
 }

+ 6
- 1
tsfuncs.h View File

137
 
137
 
138
 // PAT
138
 // PAT
139
 struct ts_pat *	ts_pat_alloc		(void);
139
 struct ts_pat *	ts_pat_alloc		(void);
140
+struct ts_pat * ts_pat_init			(struct ts_pat *pat, uint16_t transport_stream_id);
140
 struct ts_pat * ts_pat_alloc_init	(uint16_t transport_stream_id);
141
 struct ts_pat * ts_pat_alloc_init	(uint16_t transport_stream_id);
141
 struct ts_pat *	ts_pat_push_packet	(struct ts_pat *pat, uint8_t *ts_packet);
142
 struct ts_pat *	ts_pat_push_packet	(struct ts_pat *pat, uint8_t *ts_packet);
142
 void            ts_pat_clear		(struct ts_pat *pat);
143
 void            ts_pat_clear		(struct ts_pat *pat);
177
 
178
 
178
 // PMT
179
 // PMT
179
 struct ts_pmt *	ts_pmt_alloc		(void);
180
 struct ts_pmt *	ts_pmt_alloc		(void);
180
-struct ts_pmt * ts_pmt_alloc_init	(uint16_t org_network_id, uint16_t transport_stream_id);
181
 struct ts_pmt *	ts_pmt_push_packet	(struct ts_pmt *pmt, uint8_t *ts_packet);
181
 struct ts_pmt *	ts_pmt_push_packet	(struct ts_pmt *pmt, uint8_t *ts_packet);
182
 void            ts_pmt_clear		(struct ts_pmt *pmt);
182
 void            ts_pmt_clear		(struct ts_pmt *pmt);
183
 void            ts_pmt_free			(struct ts_pmt **pmt);
183
 void            ts_pmt_free			(struct ts_pmt **pmt);
192
 
192
 
193
 // NIT
193
 // NIT
194
 struct ts_nit * ts_nit_alloc		(void);
194
 struct ts_nit * ts_nit_alloc		(void);
195
+struct ts_nit * ts_nit_init			(struct ts_nit *nit, uint16_t network_id);
195
 struct ts_nit * ts_nit_alloc_init	(uint16_t network_id);
196
 struct ts_nit * ts_nit_alloc_init	(uint16_t network_id);
196
 struct ts_nit *	ts_nit_push_packet	(struct ts_nit *nit, uint8_t *ts_packet);
197
 struct ts_nit *	ts_nit_push_packet	(struct ts_nit *nit, uint8_t *ts_packet);
197
 void			ts_nit_clear		(struct ts_nit *nit);
198
 void			ts_nit_clear		(struct ts_nit *nit);
210
 
211
 
211
 // SDT
212
 // SDT
212
 struct ts_sdt *	ts_sdt_alloc		(void);
213
 struct ts_sdt *	ts_sdt_alloc		(void);
214
+struct ts_sdt * ts_sdt_init			(struct ts_sdt *sdt, uint16_t org_network_id, uint16_t transport_stream_id);
213
 struct ts_sdt * ts_sdt_alloc_init	(uint16_t org_network_id, uint16_t transport_stream_id);
215
 struct ts_sdt * ts_sdt_alloc_init	(uint16_t org_network_id, uint16_t transport_stream_id);
214
 struct ts_sdt *	ts_sdt_push_packet	(struct ts_sdt *sdt, uint8_t *ts_packet);
216
 struct ts_sdt *	ts_sdt_push_packet	(struct ts_sdt *sdt, uint8_t *ts_packet);
215
 void            ts_sdt_clear		(struct ts_sdt *sdt);
217
 void            ts_sdt_clear		(struct ts_sdt *sdt);
225
 
227
 
226
 // EIT
228
 // EIT
227
 struct ts_eit * ts_eit_alloc				(void);
229
 struct ts_eit * ts_eit_alloc				(void);
230
+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);
228
 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);
231
 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);
229
 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
232
 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
230
 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
233
 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
247
 
250
 
248
 // TDT
251
 // TDT
249
 struct ts_tdt *	ts_tdt_alloc(void);
252
 struct ts_tdt *	ts_tdt_alloc(void);
253
+struct ts_tdt *	ts_tdt_init			(struct ts_tdt *tdt, time_t ts);
254
+struct ts_tdt *	ts_tot_init			(struct ts_tdt *tot, time_t ts);
250
 struct ts_tdt *	ts_tdt_alloc_init	(time_t ts);
255
 struct ts_tdt *	ts_tdt_alloc_init	(time_t ts);
251
 struct ts_tdt *	ts_tot_alloc_init	(time_t ts);
256
 struct ts_tdt *	ts_tot_alloc_init	(time_t ts);
252
 void			ts_tdt_clear		(struct ts_tdt *tdt);
257
 void			ts_tdt_clear		(struct ts_tdt *tdt);

Loading…
Cancel
Save