Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mpegts parsers: another error forwarding fixes
  • Loading branch information
perexg committed Jan 31, 2015
1 parent ce2fc63 commit a39bb43
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
15 changes: 8 additions & 7 deletions src/parsers/parsers.c
Expand Up @@ -134,9 +134,11 @@ void
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:
Expand Down Expand Up @@ -232,7 +234,6 @@ parse_aac(service_t *t, elementary_stream_t *st, const uint8_t *data,
/* Payload unit start */
st->es_parser_state = 1;
st->es_parser_ptr = 0;
parser_deliver_error(t, st);
sbuf_reset(&st->es_buf, 4000);
}

Expand Down Expand Up @@ -1343,7 +1344,6 @@ parse_subtitles(service_t *t, elementary_stream_t *st, const uint8_t *data,
if(start) {
/* Payload unit start */
st->es_parser_state = 1;
parser_deliver_error(t, st);
sbuf_reset(&st->es_buf, 4000);
}

Expand Down Expand Up @@ -1409,7 +1409,6 @@ parse_teletext(service_t *t, elementary_stream_t *st, const uint8_t *data,
if(start) {
st->es_parser_state = 1;
st->es_parser_ptr = 0;
parser_deliver_error(t, st);
sbuf_reset(&st->es_buf, 4000);
}

Expand Down Expand Up @@ -1480,8 +1479,10 @@ parser_deliver(service_t *t, elementary_stream_t *st, th_pkt_t *pkt)
/**
* 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;
Expand Down
2 changes: 1 addition & 1 deletion src/plumbing/globalheaders.c
Expand Up @@ -364,7 +364,7 @@ gh_pass(globalheaders_t *gh, streaming_message_t *sm)
break;
case SMT_PACKET:
pkt = sm->sm_data;
if (pkt->pkt_payload)
if (pkt->pkt_payload || pkt->pkt_err)
streaming_target_deliver2(gh->gh_output, sm);
else
streaming_msg_free(sm);
Expand Down
3 changes: 2 additions & 1 deletion src/subscriptions.c
Expand Up @@ -428,7 +428,8 @@ subscription_input_direct(void *opauqe, streaming_message_t *sm)
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;
Expand Down

0 comments on commit a39bb43

Please sign in to comment.