mirror of https://github.com/mpv-player/mpv
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. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22516 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
e2e3c839e7
commit
a4c58e8f87
|
@ -337,7 +337,7 @@ void *decode_video(sh_video_t *sh_video, unsigned char *start, int in_size,
|
|||
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 @@ void *decode_video(sh_video_t *sh_video, unsigned char *start, int in_size,
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -1615,8 +1615,6 @@ static int generate_video_frame(sh_video_t *sh_video, demux_stream_t *d_video)
|
|||
}
|
||||
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) {
|
||||
|
|
Loading…
Reference in New Issue