parse_mpeg_ts(service_t *t, elementary_stream_t *st, const uint8_t *data,
int len, int start, int err)
{
-
- if(err && (err != 2 || !start))
+ if(err) {
+ if (start)
+ parser_deliver_error(t, st);
sbuf_err(&st->es_buf, 1);
+ }
switch(st->es_type) {
case SCT_MPEG2VIDEO:
/* Payload unit start */
st->es_parser_state = 1;
st->es_parser_ptr = 0;
- parser_deliver_error(t, st);
sbuf_reset(&st->es_buf, 4000);
}
if(start) {
/* Payload unit start */
st->es_parser_state = 1;
- parser_deliver_error(t, st);
sbuf_reset(&st->es_buf, 4000);
}
if(start) {
st->es_parser_state = 1;
st->es_parser_ptr = 0;
- parser_deliver_error(t, st);
sbuf_reset(&st->es_buf, 4000);
}
/**
* Input is ok
*/
- service_set_streaming_status_flags(t, TSS_PACKETS);
- t->s_streaming_live |= TSS_LIVE;
+ if (pkt->pkt_payload) {
+ service_set_streaming_status_flags(t, TSS_PACKETS);
+ t->s_streaming_live |= TSS_LIVE;
+ }
/* Forward packet */
pkt->pkt_componentindex = st->es_index;
if(sm->sm_type == SMT_PACKET) {
th_pkt_t *pkt = sm->sm_data;
s->ths_total_err += pkt->pkt_err;
- s->ths_bytes_in += pkt->pkt_payload->pb_size;
+ if (pkt->pkt_payload)
+ s->ths_bytes_in += pkt->pkt_payload->pb_size;
} else if(sm->sm_type == SMT_MPEGTS) {
pktbuf_t *pb = sm->sm_data;
s->ths_total_err += pb->pb_err;