diff options
Diffstat (limited to 'video/decode/dec_video.c')
-rw-r--r-- | video/decode/dec_video.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/video/decode/dec_video.c b/video/decode/dec_video.c index 34dc9bd073..e9a59da255 100644 --- a/video/decode/dec_video.c +++ b/video/decode/dec_video.c @@ -206,10 +206,11 @@ bool video_init_best_codec(struct dec_video *d_video, char* video_decoders) } void *video_decode(struct dec_video *d_video, struct demux_packet *packet, - int drop_frame, double pts) + int drop_frame) { mp_image_t *mpi = NULL; struct MPOpts *opts = d_video->opts; + double pts = packet ? packet->pts : MP_NOPTS_VALUE; if (opts->correct_pts && pts != MP_NOPTS_VALUE) { int delay = -1; @@ -242,7 +243,7 @@ void *video_decode(struct dec_video *d_video, struct demux_packet *packet, } } - mpi = d_video->vd_driver->decode(d_video, packet, drop_frame, &pts); + mpi = d_video->vd_driver->decode(d_video, packet, drop_frame); //------------------------ frame decoded. -------------------- @@ -256,6 +257,8 @@ void *video_decode(struct dec_video *d_video, struct demux_packet *packet, else if (opts->field_dominance == 1) mpi->fields &= ~MP_IMGFIELD_TOP_FIRST; + pts = mpi->pts; + double prevpts = d_video->codec_reordered_pts; d_video->prev_codec_reordered_pts = prevpts; d_video->codec_reordered_pts = pts; |