|
@@ -201,6 +201,12 @@ void *decode_thread(void *_ts) {
|
201
|
201
|
return NULL;
|
202
|
202
|
}
|
203
|
203
|
|
|
204
|
+static inline void output_write(struct ts *ts, uint8_t *data, unsigned int data_size) {
|
|
205
|
+ if (!data)
|
|
206
|
+ return;
|
|
207
|
+ write(ts->output.fd, data, data_size);
|
|
208
|
+}
|
|
209
|
+
|
204
|
210
|
void *write_thread(void *_ts) {
|
205
|
211
|
struct ts *ts = _ts;
|
206
|
212
|
uint8_t *data;
|
|
@@ -216,14 +222,12 @@ void *write_thread(void *_ts) {
|
216
|
222
|
continue;
|
217
|
223
|
}
|
218
|
224
|
data = cbuf_get (ts->write_buf, FRAME_SIZE, &data_size);
|
219
|
|
- if (data)
|
220
|
|
- write(ts->output.fd, data, data_size);
|
|
225
|
+ output_write(ts, data, data_size);
|
221
|
226
|
}
|
222
|
227
|
|
223
|
228
|
do { // Flush data
|
224
|
229
|
data = cbuf_get(ts->write_buf, FRAME_SIZE, &data_size);
|
225
|
|
- if (data)
|
226
|
|
- write(ts->output.fd, data, data_size);
|
|
230
|
+ output_write(ts, data, data_size);
|
227
|
231
|
} while(data);
|
228
|
232
|
|
229
|
233
|
return NULL;
|
|
@@ -307,9 +311,9 @@ void process_packets(struct ts *ts, uint8_t *data, ssize_t data_len) {
|
307
|
311
|
decode_packet(ts, ts_packet);
|
308
|
312
|
if (ts->pid_filter) {
|
309
|
313
|
if (pidmap_get(&ts->pidmap, pid)) // PAT or allowed PIDs
|
310
|
|
- write(ts->output.fd, ts_packet, 188);
|
|
314
|
+ output_write(ts, ts_packet, 188);
|
311
|
315
|
} else {
|
312
|
|
- write(ts->output.fd, ts_packet, 188);
|
|
316
|
+ output_write(ts, ts_packet, 188);
|
313
|
317
|
}
|
314
|
318
|
}
|
315
|
319
|
|