mirror of https://github.com/mpv-player/mpv
demux_lavf: mark AVI timestamps non-pts to avoid messages
Playing AVI files containing B-frames with demux_lavf printed two "decreasing pts" info messages at the start of the file. We know the timestamps from AVI won't be valid pts, so add a demuxer field to convey that information to the timing code and make that not even try to use the timestamps as valid pts.
This commit is contained in:
parent
7eb48343d4
commit
fdea095e34
|
@ -521,6 +521,7 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){
|
|||
/* for avi libavformat returns the avi timestamps in .dts,
|
||||
* some made-up stuff that's not really pts in .pts */
|
||||
priv->use_dts = true;
|
||||
demuxer->timestamp_type = TIMESTAMP_TYPE_SORT;
|
||||
} else {
|
||||
if (opts->user_correct_pts != 0)
|
||||
avfc->flags |= AVFMT_FLAG_GENPTS;
|
||||
|
|
|
@ -99,6 +99,11 @@ struct MPOpts;
|
|||
|
||||
#define MP_NOPTS_VALUE (-1LL<<63) //both int64_t and double should be able to represent this exactly
|
||||
|
||||
enum timestamp_type {
|
||||
TIMESTAMP_TYPE_PTS,
|
||||
TIMESTAMP_TYPE_SORT,
|
||||
};
|
||||
|
||||
|
||||
// DEMUXER control commands/answers
|
||||
#define DEMUXER_CTRL_NOTIMPL -1
|
||||
|
@ -249,6 +254,7 @@ typedef struct demuxer {
|
|||
/* Set if using absolute seeks for small movements is OK (no pts resets
|
||||
* that would make pts ambigious, preferably supports back/forward flags */
|
||||
bool accurate_seek;
|
||||
enum timestamp_type timestamp_type;
|
||||
//
|
||||
demux_stream_t *audio; // audio buffer/demuxer
|
||||
demux_stream_t *video; // video buffer/demuxer
|
||||
|
|
|
@ -2526,7 +2526,8 @@ static void determine_frame_pts(struct MPContext *mpctx)
|
|||
if (opts->user_pts_assoc_mode) {
|
||||
sh_video->pts_assoc_mode = opts->user_pts_assoc_mode;
|
||||
} else if (sh_video->pts_assoc_mode == 0) {
|
||||
if (sh_video->codec_reordered_pts != MP_NOPTS_VALUE)
|
||||
if (mpctx->d_video->demuxer->timestamp_type == TIMESTAMP_TYPE_PTS
|
||||
&& sh_video->codec_reordered_pts != MP_NOPTS_VALUE)
|
||||
sh_video->pts_assoc_mode = 1;
|
||||
else
|
||||
sh_video->pts_assoc_mode = 2;
|
||||
|
|
Loading…
Reference in New Issue