mpv/core
wm4 ff549a2f6a core: add backstep support
Allows stepping back one frame via the frame_back_step inout command,
bound to "," by default.

This uses the precise seeking facility, and a perfect frame index built
on the fly. The index is built during playback and precise seeking, and
contains (as of this commit) the last 100 displayed or skipped frames.
This index is used to find the PTS of the previous frame, which is then
used as target for a precise seek. If no PTS is found, the core attempts
to do a seek before the current frame, and skip decoded frames until the
current frame is reached; this will create a sufficient index and the
normal backstep algorithm can be applied.

This can be rather slow. The worst case for backstepping is about the
same as the worst case for precise seeking if the previous frame can be
deduced from the index. If not, the worst case will be twice as slow.

There's also some minor danger that the index is incorrect in case
framedropping is involved. For framedropping due to --framedrop, this
problem is ignored (use of --framedrop is discouraged anyway). For
framedropping during precise seeking (done to make it faster), we try
to not add frames to the index that are produced when this can happen.
I'm not sure how well that works (or if the logic is sane), and it's
sure to break with some video filters. In the worst case, backstepping
might silently skip frames if you backstep after a user-initiated
precise seek. (Precise seeks to do indexing are not affected.)

Likewise, video filters that somehow change timing of frames and do not
do this in a deterministic way (i.e. if you seek to a position, frames
with different timings are produced than when the position is reached
during normal playback) will make backstepping silently jump to the
wrong frame. Enabling/disabling filters during playback (like for
example deinterlacing) will have similar bad effects.
2013-04-24 20:27:12 +02:00
..
input core: add backstep support 2013-04-24 20:27:12 +02:00
timeline core: matroska: support concatenated segments 2013-04-20 23:28:23 +02:00
asxparser.c
asxparser.h
av_common.c av_common: allow calling mp_codec_to_av_codec_id() with NULL 2013-04-20 23:28:26 +02:00
av_common.h demux_lavf, ad_lavc, vd_lavc: pass codec header data directly 2013-02-10 17:25:57 +01:00
av_log.c vf_lavfi: add libavfilter bridge 2013-04-21 04:39:58 +02:00
av_log.h
av_opts.c
av_opts.h
bstr.c bstr: add bstrspn() 2013-04-21 03:47:05 +02:00
bstr.h bstr: add bstrto0() 2013-04-21 03:47:05 +02:00
cfg-mplayer.h x11: use mpv internal key auto-repeat handling if possible 2013-04-24 18:07:01 +02:00
codecs.c core: redo how codecs are mapped, remove codecs.conf 2013-02-10 17:25:56 +01:00
codecs.h core: redo how codecs are mapped, remove codecs.conf 2013-02-10 17:25:56 +01:00
command.c core: add backstep support 2013-04-24 20:27:12 +02:00
command.h command: give feedback on the OSD if a property is unavailable 2013-02-16 21:41:24 +01:00
cpudetect.c
cpudetect.h
defaultopts.c input: change default auto-repeat settings 2013-04-24 17:46:40 +02:00
defaultopts.h
encode.h Remove vo_fps global variable 2013-03-04 22:21:57 +01:00
encode_lavc.c encoding: when output is pipe: or pipe:1, avoid mp_msg to stdout 2013-04-15 13:30:21 +02:00
encode_lavc.h Remove vo_fps global variable 2013-03-04 22:21:57 +01:00
m_config.c m_option: add function to check whether parameters are required 2013-04-21 03:48:30 +02:00
m_config.h core: add --reset-on-next-file option 2013-04-10 21:32:46 +02:00
m_option.c m_option: fix positional sub-option skipping 2013-04-23 14:21:08 +02:00
m_option.h m_option: add function to check whether parameters are required 2013-04-21 03:48:30 +02:00
m_property.c input: make input command deprecation warnings visible 2013-03-26 01:29:38 +01:00
m_property.h
m_struct.c
m_struct.h
mp_common.c cleanup: remove duplicated function, move escape parsing function 2013-02-16 23:24:46 +01:00
mp_common.h cleanup: remove duplicated function, move escape parsing function 2013-02-16 23:24:46 +01:00
mp_core.h core: add backstep support 2013-04-24 20:27:12 +02:00
mp_fifo.c Prefix keycode defines with MP_ 2013-02-12 10:27:00 +01:00
mp_fifo.h
mp_msg.c encoding: when output is pipe: or pipe:1, avoid mp_msg to stdout 2013-04-15 13:30:21 +02:00
mp_msg.h encoding: when output is pipe: or pipe:1, avoid mp_msg to stdout 2013-04-15 13:30:21 +02:00
mp_osd.h osd: always update already visible OSD bar on seeks 2013-02-16 20:50:05 +01:00
mp_talloc.h
mplayer.c core: add backstep support 2013-04-24 20:27:12 +02:00
mplayer.h core: remove a number of global variables 2013-03-08 02:12:53 +01:00
options.h x11: use mpv internal key auto-repeat handling if possible 2013-04-24 18:07:01 +02:00
parser-cfg.c parser-cfg: fix profile-desc 2013-02-18 17:01:25 +01:00
parser-cfg.h
parser-mpcmd.c options: fix --no-shuffle and --no-{ 2013-02-23 00:07:11 +01:00
parser-mpcmd.h
path.c
path.h
playlist.c
playlist.h
playlist_parser.c
playlist_parser.h
quvi.c
screenshot.c screenshot: show a message on each screenshot taken 2013-02-26 01:55:52 +01:00
screenshot.h screenshot: show a message on each screenshot taken 2013-02-26 01:55:52 +01:00
subopt-helper.c
subopt-helper.h
version.c