Command line video player
Go to file
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
DOCS core: add backstep support 2013-04-24 20:27:12 +02:00
TOOLS change reverse DNS strings to io.mpv.* 2013-04-16 23:34:58 +02:00
audio audio/decode: remove vararg from ad_control() 2013-04-12 20:35:59 +02:00
compat configure: bump minimum FFmpeg/Libav versions, remove compat hacks 2013-03-13 23:52:04 +01:00
core core: add backstep support 2013-04-24 20:27:12 +02:00
demux demux_mkv: fix out of range comparison 2013-04-24 16:19:18 +02:00
etc core: add backstep support 2013-04-24 20:27:12 +02:00
osdep mp_msg: fix status output disappearing when redirecting INPUT. 2013-03-18 20:33:29 +01:00
stream options: untangle track range parsing for stream_cdda 2013-04-21 03:48:30 +02:00
sub subassconvert: add more web colors 2013-04-20 23:28:27 +02:00
video x11: use mpv internal key auto-repeat handling if possible 2013-04-24 18:07:01 +02:00
.gitignore vo_opengl: split into multiple files, convert to new option API 2013-03-28 21:46:17 +01:00
AUTHORS
Copyright Copyright: cleanup entries for removed code 2013-02-03 16:53:49 +01:00
LICENSE
Makefile vf_lavfi: add libavfilter bridge 2013-04-21 04:39:58 +02:00
README.rst README: add a new one using ReST 2013-01-07 21:09:11 +01:00
configure x11: use mpv internal key auto-repeat handling if possible 2013-04-24 18:07:01 +02:00
talloc.c
talloc.h clang: fix all warnings except deprecations 2012-11-13 22:19:18 +01:00
version.sh version.sh: fix git rev. generation (.git is not always a directory) 2013-02-06 23:03:37 +01:00

README.rst

mpv
###

Overview
========

**mpv** is a movie player based on MPlayer and mplayer2. It supports a wide
variety of video file formats, audio and video codecs, and subtitle types.

If you are wondering what's different from mplayer2 and MPlayer you can read
more about the changes_.

Compilation
===========

Compiling with full features requires development files for several
external libraries. Below is a list of some important requirements. For
more information see the output of ``./configure --help`` for a list of options,
or look at the list of enabled and disabled features printed after running
``./configure``. If you think you have support for some feature installed
but configure fails to detect it, the file ``config.log`` may contain
information about the reasons for the failure.

Essential dependencies (incomplete list):

- gcc or clang
- X development headers (xlib, X extensions, libvdpau, libGL, libXv, ...)
- Audio output development headers (libasound, pulseaudio)
- fribidi, freetype, fontconfig development headers (for libass)
- libass
- FFmpeg libraries (libavutil libavcodec libavformat libswscale libpostproc)
- libjpeg
- libquvi if you want to play Youtube videos directly
- libx264 if you want to use encoding (has to be explicitly enabled when
  compiling ffmpeg)

Most of the above libraries are available in suitable versions on normal
Linux distributions. However FFmpeg is an exception (distro versions may be
too old to work at all or work well). For that reason you may want to use
the separately available build wrapper (mpv-build_) that first compiles FFmpeg
libraries and libass, and then compiles the player statically linked against
those.

If you are running Mac OSX and using homebrew we provide homebrew-mpv_, an up
to date formula that compiles mpv with sensible dependencies and defaults for
OSX.

Bug reports
===========

Please use the `issues tracker`_ provided by GitHub to send us bug reports or
feature requests.

Contributing
============

For small changes you can just send us pull requests through GitHub. For bigger
changes come and talk to us on IRC before you start working on them. It will
make code review easier for both parties later on.

Contacts
========

You can find us on IRC in ``#mpv-player`` on ``irc.freenode.net``

.. _changes: https://github.com/mpv-player/mpv/blob/master/DOCS/man/en/changes.rst
.. _mpv-build: https://github.com/mpv-player/mpv-build
.. _homebrew-mpv: https://github.com/mpv-player/homebrew-mpv
.. _issues tracker: https://github.com/mpv-player/mpv/issues