*/
static void
makeapkt(service_t *t, elementary_stream_t *st, const void *buf,
- int len, int64_t dts, int duration, int channels, int sri,
- int errors)
+ int len, int64_t dts, int duration, int channels, int sri)
{
th_pkt_t *pkt = pkt_alloc(st->es_type, buf, len, dts, dts);
pkt->pkt_duration = duration;
pkt->a.pkt_channels = channels;
pkt->a.pkt_sri = sri;
- pkt->pkt_err = errors;
+ pkt->pkt_err = st->es_buf_a.sb_err;
+ st->es_buf_a.sb_err = 0;
parser_deliver(t, st, pkt);
int channels = ((p[2] & 0x01) << 2) | ((p[3] & 0xc0) >> 6);
- makeapkt(t, st, p, fsize, dts, duration, channels, sri,
- st->es_buf_a.sb_err);
- st->es_buf_a.sb_err = 0;
+ makeapkt(t, st, p, fsize, dts, duration, channels, sri);
sbuf_cut(&st->es_buf_a, i + fsize);
goto again;
}
h = RB32(buf + i + fsize);
if(mpa_valid_frame(h)) {
makeapkt(t, st, buf + i, fsize, dts, duration,
- channels, mpa_sri[(buf[i+2] >> 2) & 3],
- st->es_buf_a.sb_err);
- st->es_buf_a.sb_err = 0;
+ channels, mpa_sri[(buf[i+2] >> 2) & 3]);
sbuf_cut(&st->es_buf_a, i + fsize);
goto again;
}
int lfeon = read_bits(&bs, 1);
int channels = acmodtab[acmod] + lfeon;
- makeapkt(t, st, p, fsize, dts, duration, channels, sri,
- st->es_buf_a.sb_err);
- st->es_buf_a.sb_err = 0;
+ makeapkt(t, st, p, fsize, dts, duration, channels, sri);
sbuf_cut(&st->es_buf_a, i + fsize);
goto again;
}
if(dts != PTS_UNSET && len >= i + fsize + 6 &&
eac3_valid_frame(p + fsize)) {
- makeapkt(t, st, p, fsize, dts, duration, channels, sri,
- st->es_buf_a.sb_err);
- st->es_buf_a.sb_err = 0;
+ makeapkt(t, st, p, fsize, dts, duration, channels, sri);
sbuf_cut(&st->es_buf_a, i + fsize);
goto again;
}