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.c7
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;