r37257 - in trunk/sub: av_sub.c spudec.c
Author: reimar Date: Sat Aug 23 16:23:37 2014 New Revision: 37257 Log: Better handling of out-of-range subtitle timestamps. Fixes decoding of PGS subtitles. Modified: trunk/sub/av_sub.c trunk/sub/spudec.c Modified: trunk/sub/av_sub.c ============================================================================== --- trunk/sub/av_sub.c Sat Aug 23 15:59:32 2014 (r37256) +++ trunk/sub/av_sub.c Sat Aug 23 16:23:37 2014 (r37257) @@ -130,7 +130,7 @@ int decode_avsub(struct sh_sub *sh, uint 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; } Modified: trunk/sub/spudec.c ============================================================================== --- trunk/sub/spudec.c Sat Aug 23 15:59:32 2014 (r37256) +++ trunk/sub/spudec.c Sat Aug 23 16:23:37 2014 (r37257) @@ -1426,9 +1426,9 @@ void spudec_packet_send(void *spu, packe { 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); }
participants (1)
-
reimar