static void
parser_deliver(service_t *t, elementary_stream_t *st, th_pkt_t *pkt)
{
+ int64_t diff;
+
assert(pkt->pkt_type == st->es_type);
- if (pts_diff(pkt->pkt_pcr, pkt->pkt_pts) > 2*90000) {
+ diff = st->es_type == SCT_DVBSUB ? 4*90000 : 2*90000;
+
+ if (pts_diff(pkt->pkt_pcr, pkt->pkt_pts) > diff) {
if (tvhlog_limit(&st->es_pcr_log, 2))
tvhwarn(LS_PARSER, "%s: PTS and PCR diff is very large (%"PRId64")",
service_component_nicename(st), pts_diff(pkt->pkt_pcr, pkt->pkt_pts));
LIST_FOREACH(tfs2, &tf->tf_streams, tfs_link)
if(tfs2->tfs_audio && tfs2->tfs_last_dts_in != PTS_UNSET) {
diff = tsfix_ts_diff(tfs2->tfs_last_dts_in, pkt->pkt_dts);
- if (diff > 3 * 90000) {
+ if (diff > 4 * 90000) {
tvhwarn(LS_TSFIX, "The timediff for %s is big (%"PRId64"), using audio dts",
streaming_component_type2txt(tfs->tfs_type), diff);
tfs->tfs_parent = tfs2;