summaryrefslogtreecommitdiffstats
path: root/video/decode/dec_video.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/decode/dec_video.c')
-rw-r--r--video/decode/dec_video.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/video/decode/dec_video.c b/video/decode/dec_video.c
index 1802e19fbf..ec4cd5b775 100644
--- a/video/decode/dec_video.c
+++ b/video/decode/dec_video.c
@@ -171,6 +171,7 @@ bool video_init_best_codec(struct dec_video *d_video, char* video_decoders)
{
assert(!d_video->vd_driver);
video_reset_decoding(d_video);
+ d_video->has_broken_packet_pts = -10; // needs 10 packets to reach decision
struct mp_decoder_entry *decoder = NULL;
struct mp_decoder_list *list =
@@ -363,6 +364,11 @@ struct mp_image *video_decode(struct dec_video *d_video,
pts = d_video->decoded_pts;
}
+ if (d_video->has_broken_packet_pts < 0)
+ d_video->has_broken_packet_pts++;
+ if (d_video->num_codec_pts_problems || pkt_pts == MP_NOPTS_VALUE)
+ d_video->has_broken_packet_pts = 1;
+
mpi->pts = pts;
d_video->decoded_pts = pts;
return mpi;