Mercurial > mplayer.hg
changeset 22498:b6b1bd155b58
Allow demuxers to return packets with no pts in -correct-pts mode
as long as there are enough pts values for frames that the decoder
returns.
This should allow passing NAL units individually.
author | uau |
---|---|
date | Sun, 11 Mar 2007 17:30:44 +0000 |
parents | af2ea92641a8 |
children | 643be517b47a |
files | libmpcodecs/dec_video.c mplayer.c |
diffstat | 2 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpcodecs/dec_video.c Sun Mar 11 17:30:43 2007 +0000 +++ b/libmpcodecs/dec_video.c Sun Mar 11 17:30:44 2007 +0000 @@ -337,7 +337,7 @@ unsigned int t2; double tt; - if (correct_pts) { + if (correct_pts && pts != MP_NOPTS_VALUE) { int delay = get_current_video_decoder_lag(sh_video); if (delay >= 0) { if (delay > sh_video->num_buffered_pts) @@ -395,8 +395,15 @@ mpi->fields &= ~MP_IMGFIELD_TOP_FIRST; if (correct_pts) { - sh_video->num_buffered_pts--; - sh_video->pts = sh_video->buffered_pts[sh_video->num_buffered_pts]; + if (sh_video->num_buffered_pts) { + sh_video->num_buffered_pts--; + sh_video->pts = sh_video->buffered_pts[sh_video->num_buffered_pts]; + } + else { + mp_msg(MSGT_CPLAYER, MSGL_ERR, "No pts value from demuxer to " + "use for frame!\n"); + sh_video->pts = MP_NOPTS_VALUE; + } } return mpi; }
--- a/mplayer.c Sun Mar 11 17:30:43 2007 +0000 +++ b/mplayer.c Sun Mar 11 17:30:44 2007 +0000 @@ -1615,8 +1615,6 @@ } if (in_size > max_framesize) max_framesize = in_size; - if (pts == MP_NOPTS_VALUE) - mp_msg(MSGT_CPLAYER, MSGL_ERR, "pts value from demuxer MISSING\n"); current_module = "decode video"; decoded_frame = decode_video(sh_video, start, in_size, 0, pts); if (decoded_frame) {