1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-27 17:42:17 +00:00
mpv/mpvcore
wm4 f5219720f8 video: refactor PTS code, add fall back heuristic to DTS
Refactor the PTS handling code to make it cleaner, and to separate the
bits that use PTS sorting.

Add a heuristic to fall back to DTS if the PTS us non-monotonic. This
code is based on what FFmpeg/Libav use for ffplay/avplay and also
best_effort_timestamp (which is only in FFmpeg). Basically, this 1. just
uses the DTS if PTS is unset, and 2. ignores PTS entirely if PTS is non-
monotonic, but DTS is sorted.

The code is pretty much the same as in Libav [1]. I'm not sure if all of
it is really needed, or if it does more than what the paragraph above
mentions. But maybe it's fine to cargo-cult this.

This heuristic fixes playback of mpeg4 in ogm, which returns packets
with PTS==DTS, even though the PTS timestamps should follow codec
reordering. This is probably a libavformat demuxer bug, but good luck
trying to fix it.

The way vd_lavc.c returns the frame PTS and DTS to dec_video.c is a bit
inelegant, but maybe better than trying to mess the PTS back into the
decoder callback again.

[1] https://git.libav.org/?p=libav.git;a=blob;f=cmdutils.c;h=3f1c667075724c5cde69d840ed5ed7d992898334;hb=fa515c2088e1d082d45741bbd5c05e13b0500804#l1431
2013-11-27 21:14:39 +01:00
..
input input: discard precise scrolling commands with no value 2013-11-25 19:35:52 +01:00
player Move some code from player to audio/video reset functions 2013-11-27 21:14:39 +01:00
asxparser.c core: add a playlist demuxer 2013-08-26 10:09:45 +02:00
asxparser.h
av_common.c video: refactor PTS code, add fall back heuristic to DTS 2013-11-27 21:14:39 +01:00
av_common.h video: refactor PTS code, add fall back heuristic to DTS 2013-11-27 21:14:39 +01:00
av_log.c configure: uniform the defines to #define HAVE_xxx (0|1) 2013-11-03 21:59:54 +01:00
av_log.h mplayer: print ffmpeg library versions along with mpv version info 2013-10-14 20:14:17 +02:00
av_opts.c
av_opts.h
bstr.c bstr: make UTF-8 check stricter 2013-08-15 23:40:03 +02:00
bstr.h bstr: add UTF-8 validation and sanitation functions 2013-08-15 23:40:02 +02:00
charset_conv.c configure: uniform the defines to #define HAVE_xxx (0|1) 2013-11-03 21:59:54 +01:00
charset_conv.h sub: don't print detected charset if it's UTF-8 2013-08-15 23:40:04 +02:00
codecs.c
codecs.h
cpudetect.c
cpudetect.h
encode_lavc.c encode_lavc: add missing newline in error message 2013-11-16 21:46:17 +01:00
encode_lavc.h
encode.h Split mplayer.c 2013-10-30 01:53:53 +01:00
m_config.c options: don't prefix sub-options with "--" in help output 2013-11-23 21:35:03 +01:00
m_config.h options: don't prefix sub-options with "--" in help output 2013-11-23 21:35:03 +01:00
m_option.c options: provide a way for --vf to print custom help 2013-11-23 21:29:05 +01:00
m_option.h options: provide a way for --vf to print custom help 2013-11-23 21:29:05 +01:00
m_property.c command: when changing a property, allow showing an extra OSD message 2013-09-21 00:07:42 +02:00
m_property.h command: when changing a property, allow showing an extra OSD message 2013-09-21 00:07:42 +02:00
mp_common.c mp_common: add function which accepts a format string to format playback time 2013-09-15 02:51:17 +02:00
mp_common.h Reduce stheader.h includes, move stream types to mp_common.h 2013-11-23 22:08:42 +01:00
mp_memory_barrier.h
mp_msg.c mp_msg: remove gettext() support 2013-10-18 22:38:10 +02:00
mp_msg.h mp_msg: remove gettext() support 2013-10-18 22:38:10 +02:00
mp_ring.c mp_ring: fix comment typo 2013-11-22 19:12:43 +01:00
mp_ring.h mp_ring: remove unused function 2013-11-15 21:08:48 +01:00
mp_talloc.h mp_talloc: simplify a bit 2013-10-19 21:43:08 +02:00
mpv_global.h
options.c video: disable PTS sorting fallback by default 2013-11-25 23:14:54 +01:00
options.h video: remove vf_pp auto-insertion 2013-11-23 21:30:56 +01:00
parser-cfg.c parser-cfg: allow putting options with leading "--" 2013-10-14 23:41:26 +02:00
parser-cfg.h
parser-mpcmd.c options: don't let watch_later etc. overwite command line options 2013-10-25 22:52:54 +02:00
parser-mpcmd.h
path.c configure: uniform the defines to #define HAVE_xxx (0|1) 2013-11-03 21:59:54 +01:00
path.h Split mplayer.c 2013-10-30 01:53:53 +01:00
playlist_parser.c playlist: rewrite PLS parser 2013-11-04 23:55:41 +01:00
playlist_parser.h core: add a playlist demuxer 2013-08-26 10:09:45 +02:00
playlist.c playlist: check for NULL on caller site 2013-10-12 18:57:02 +02:00
playlist.h mplayer: fix looping of very short files 2013-09-29 21:10:45 +02:00
resolve_quvi9.c libquvi9: work around insane interaction between libquvi and libkdecore 2013-10-12 18:56:03 +02:00
resolve_quvi.c quvi: coerce libquvi 0.4 support into allowing format switching 2013-09-10 16:38:34 +02:00
resolve.h quvi: coerce libquvi 0.4 support into allowing format switching 2013-09-10 16:38:34 +02:00
version.c