# HG changeset patch # User reimar # Date 1408803817 0 # Node ID 6d654ac9201efc0f76b01b45b57f3d8d48e74a01 # Parent bb15cab6c0597939f279bff9de1a285ab1a03609 Better handling of out-of-range subtitle timestamps. Fixes decoding of PGS subtitles. diff -r bb15cab6c059 -r 6d654ac9201e sub/av_sub.c --- a/sub/av_sub.c Sat Aug 23 13:59:32 2014 +0000 +++ b/sub/av_sub.c Sat Aug 23 14:23:37 2014 +0000 @@ -130,7 +130,7 @@ if (res < 0) return res; if (*pts != MP_NOPTS_VALUE) { - if (sub.end_display_time > sub.start_display_time) + if (sub.end_display_time > sub.start_display_time && sub.end_display_time < 0x7fffffff) *endpts = *pts + sub.end_display_time / 1000.0; *pts += sub.start_display_time / 1000.0; } diff -r bb15cab6c059 -r 6d654ac9201e sub/spudec.c --- a/sub/spudec.c Sat Aug 23 13:59:32 2014 +0000 +++ b/sub/spudec.c Sat Aug 23 14:23:37 2014 +0000 @@ -1426,9 +1426,9 @@ { packet->start_pts = 0; packet->end_pts = 0x7fffffff; - if (pts != MP_NOPTS_VALUE) + if (pts != MP_NOPTS_VALUE && pts < 0xffffffffu / 90000) packet->start_pts = pts * 90000; - if (endpts != MP_NOPTS_VALUE) + if (endpts != MP_NOPTS_VALUE && endpts < 0xffffffffu / 90000) packet->end_pts = endpts * 90000; spudec_queue_packet(spu, packet); }