Compare commits

...
21 Commits
Author SHA1 Message Date
wm4 8eeb083e71 Release 0.1.6 2013-09-13 22:03:30 +02:00
xylosper a8b625d3b1 vd_lavc: reset last_sample_aspect_ratio in uninit_avctx()
In init_vo(), if sh->aspect is 0 or last_sample_aspect_ratio is set,
sh->aspect is overwritten. With software decoding fallback behaviour,
this makes the aspect ratio from container ignored since
last_sample_aspect_ratio is already set in first try with hardware
decoding.
2013-09-13 22:00:59 +02:00
Stefano Pigozzi 1e64edb7d8 macosx_application: fix file opening on 10.9 (for real this time)
I did commit 86c05655d by thinking `mpv` already removed the `mpv` from
argc/argv. It actually is still there, so the argc must be 1 to check for no
arguments.

Thanks to @Nyx0uf for pointing out the bug and for testing on 10.9!
2013-09-13 22:00:49 +02:00
Stefano Pigozzi 42302e6037 macosx: always active bundle path lookup if cocoa is active
This is not really something you want to disable anyway. If there is no bundle
the code already does it's falbacks anyway.
2013-09-13 22:00:44 +02:00
Stefano Pigozzi 22bed138c1 macosx_application: fix file opening on OS X 10.9 (hopefully)
File opening through Finder, apparently drops `--psn` arguments on Mavericks
and just uses no args. Modify the code to account for that case.

This wasn't tested on 10.9 itself (I don't have a paid dev account), but it
*should* work if I understood the problem correctly.
2013-09-13 22:00:40 +02:00
Martin Herkt 95abd6b82a mpvcore/path: Fix non-MinGW builds
Well that was dumb.
2013-09-13 22:00:33 +02:00
Martin Herkt eb02fdde90 mpvcore/path: Fix config path handling on Windows
Previously, mpv incorrectly used the %HOME% environment variable on
MinGW to determine the current user’s home directory. This is wrong;
the correct variable to use would be %HOMEPATH%, which would however
still be wrong since application data goes into the application data
directory, not the user’s home. This patch makes it use the local
AppData path instead of reading an environment variable.

This however exposed another problem (which also affected users who
actually had the %HOME% variable set):
b2c2fe7a37 (discussed in issue #95) introduced some changes that
make mpv load user config files from the executable path on Windows.
The problem with this change is that config_dir was still declared
static, so once a config file had been found in the executable path,
it would set config_dir to an empty string, so mpv would dump e.g.
watch_later data straight into the user’s home. This commit also
fixes that.

One side effect of this is that mpv no longer considers the “mpv”
subdirectory in the executable path (that behavior resulted from
the homedir variable always being empty), unless it is somehow
unable to determine the local AppData path.
2013-09-13 22:00:29 +02:00
Stefano Pigozzi e2bb20c43e Makefile: update DIRS to fix cleaning
Commits 40624100 and 72f2942df didn't update the variable accordingly.
2013-09-13 21:59:53 +02:00
wm4 3959702a1d stream: force demuxer of cached stream, fixes cdda:// + cache 2013-09-10 17:36:22 +02:00
wm4 4826eb8daf manpage: various improvements
Took a superficial look at the manpage, and fixed whatever I spotted.

Cherry picked from master, but required adjustments.
2013-09-10 17:33:29 +02:00
Martin Herkt 2a79912ef1 Manpage: Fix formatting (mostly for PDF output) 2013-09-10 17:28:51 +02:00
wm4 7dbed3f019 demux_mkv: don't overflow packet queue when doing sub-preroll
Consider the cluster used for prerolling contains an insane amount of
subtitle packets. Then the demuxer packet queue would be full of
subtitle packets, and demux.c would refuse to read any further packets -
including video and audio packets, resulting in EOF. Since everything
involving Matroska and subtitles is 100% insane, this can actually
happen.

Fix this by putting a limit on the number of subtitle packets read by
preroll, and throw away any further packets if the limit is exceeded. If
this happens, the preroll mechanism will stop working, but the player's
operation is unaffected otherwise.
2013-09-08 07:47:26 +02:00
wm4 ecd2d90190 Release 0.1.5 2013-09-07 08:56:06 +02:00
wm4 73e4094770 options: fix --volume option range, add some explanations to manpage
The --volume option accepted values up to 10000, but internally, the
value is always clipped to 0-100 range. What makes this even worse is
that --softvol-max suggests that it extends the range of --volume, which
is not the case. (And passing a volume larger than 100 to --volume
didn't even print a warning.)
2013-09-07 08:54:28 +02:00
wm4 f5572919e4 demux_lavf: workaround for broken libavformat subtitle seeking
The really funny thing about this commit is that this code is added on
top of another work around. Basically, subtitle seeking in libavformat
is completely broken. To make it useful, we have to add yet another
workaround.

The basic problem is that libavformat's subtitle seeking code always
uses the stream time base, instead of AV_TIME_BASE if stream index -1 is
passed to the avformat_seek_file() function.

Fixes github issue #216. Hopefully this will be fixed in ffmpeg too at
some point.
2013-09-07 08:52:14 +02:00
wm4 93bf6eba3b mplayer: try to resume playback only if a resume file actually exists
Well, this was dumb. The resume message was printed for every file,
whether a resume config file existed or not.
2013-09-07 08:51:36 +02:00
wm4 150aeafdd2 audio: fix playback of Musepack SV8 files
This is basically a libavcodec API oddity: it can happen that
avcodec_decode_audio4() returns 0 (meaning 0 bytes were consumed). It
requires you to feed the complete packet again to decode the full
packet, and to successfully decode the following packets.

We ignored this case with the argument that there's the danger of an
endless decode loop (because nothing of that packet is apparently
decoded, so it would retry forever), but change it in order to decode
mpc8 files correctly.

Also add some comments to explain the mess.
2013-09-04 08:50:32 +02:00
wm4 1ef0d02245 tv: attempt to support mjpeg streams
MPlayer handles this correctly, because MPlayer still has the FourCC
codec dispatch (codecs.conf). We need to handle this case specially,
because the libavformat rawvideo decoder will of course not eat mjpeg.

mjpeg is the only supported format, though. (Even MPlayer needs to
convert between V4L2 formats and MPlayer FourCCs, and mjpeg is the only
non-raw format.)
2013-09-04 01:42:52 +02:00
wm4 74be07c36d mplayer: handle --reset-on-next-file=""
The option list contains an empty string member with this option value,
so ignore that. I'm not sure whether the option list should maybe be
empty in this case, but it could be the wrong thing in case of other
options.
2013-09-04 01:42:49 +02:00
wm4 54c371a293 mplayer: don't let playback resume force options that are file local
This happens by default with pausing: if a file was paused when doing
quit_watch_later, then resume and unpause, then the file played after
that would start in paused mode. This is because the pause option is
backed up at thr wrong place, so it backs up the state from resuming,
instead of whatever it was set to before that.
2013-09-04 01:42:46 +02:00
wm4 4788b8323c configure: fix some descriptions in the help output 2013-09-04 01:41:35 +02:00
20 changed files with 204 additions and 164 deletions

No files matched your search

+5 -5
View File
@@ -313,12 +313,12 @@ Available filters are:
channels 0 and 1 into output channel 2 (which could be sent to a
subwoofer for example).
.. note::
.. note::
If you just want to force remixing to a certain output channel
layout, it is easier to use the ``force`` filter. For example,
``mpv '--af=force=channels=5.1' '--channels=5.1'`` would always
force remixing audio to 5.1 and output it like this.
If you just want to force remixing to a certain output channel layout,
it is easier to use the ``force`` filter. For example,
``mpv '--af=force=channels=5.1' '--channels=5.1'`` would always force
remixing audio to 5.1 and output it like this.
``sub[=fc:ch]``
Adds a subwoofer channel to the audio stream. The audio data used for
+1 -1
View File
@@ -36,7 +36,7 @@ Available audio output drivers are:
Set the name of the mixer element (default: ``Master``). This is for
example ``PCM`` or ``Master``.
``mixer-index=<number>``
Set the index of the mixer channel (default: 0). Consider the output
Set the index of the mixer channel (default: 0). Consider the output of
"``amixer scontrols``", then the index is the number that follows the
name of the element.
+3 -3
View File
@@ -182,8 +182,8 @@ input.conf and Slave Commands
This lists only commands that are not always gracefully handled by the
internal legacy translation layer. If an input.conf contains any legacy
commands, they will be displayed with ``-v`` when it is loaded, and show
and the replacement commands.
commands, a warning will be printed when starting the player. The warnings
also show the replacement commands.
Properties containing ``_`` to separate words use ``-`` instead.
@@ -222,7 +222,7 @@ input.conf and Slave Commands
+--------------------------------+----------------------------------------+
| ``show_chapters`` | ``show_text ${chapter-list}`` |
+--------------------------------+----------------------------------------+
| ``af_switch``, ``af_add``, ... | ``af [set|add|...]`` |
| ``af_switch``, ``af_add``, ... | ``af set|add|...`` |
+--------------------------------+----------------------------------------+
Other
+7 -4
View File
@@ -35,7 +35,7 @@ Newlines always start a new binding. ``#`` starts a comment (outside of quoted
string arguments). To bind commands to the ``#`` key, ``SHARP`` can be used.
``<key>`` is either the literal character the key produces (ASCII or Unicode
character), or a symbol name.
character), or a symbolic name (as printed by ``--input-keylist``).
``<section>`` (braced with ``{`` and ``}``) is the input section for this
command.
@@ -326,6 +326,9 @@ should be replaced by properties), ``stop`` (questionable use), ``get_property``
Input Command Prefixes
----------------------
These prefixes are placed between key name and the actual command. Multiple
prefixes can be specified. They are separated by whitespace.
``osd-auto`` (default)
Use the default behavior for this command.
``no-osd``
@@ -390,7 +393,7 @@ Name W Comment
``speed`` x see ``--speed``
``filename`` currently played file (path stripped)
``path`` currently played file (full path)
``media-title`` filename or libquvi ``QUVIPROP_PAGETITLE``
``media-title`` filename, title tag, or libquvi ``QUVIPROP_PAGETITLE``
``demuxer``
``stream-path`` filename (full path) of stream layer filename
``stream-pos`` x byte position in source stream
@@ -457,7 +460,7 @@ Name W Comment
``sub`` x alias for ``sid``
``sub-delay`` x see ``--sub-delay``
``sub-pos`` x see ``--sub-pos``
``sub-visibility`` x whether current subtitle is rendered
``sub-visibility`` x see ``--sub-visibility``
``sub-forced-only`` x see ``--sub-forced-only``
``sub-scale`` x subtitle font size multiplicator
``ass-use-margins`` x see ``--ass-use-margins``
@@ -471,7 +474,7 @@ Name W Comment
``playlist-pos`` current position on playlist
``playlist-count`` number of total playlist entries
``playlist`` playlist, current entry marked
``track-list`` list of audio/video/sub tracks, cur. entr. marked
``track-list`` list of audio/video/sub tracks, current entry marked
``chapter-list`` list of chapters, current entry marked
``quvi-format`` x see ``--quvi-format``
``af`` x see ``--af``
+9 -29
View File
@@ -12,7 +12,7 @@ a movie player
##############
:Author: wm4
:Date: 2013-07-08
:Date: 2013-09-08
:Copyright: GPLv3
:Version: git
:Manual section: 1
@@ -202,8 +202,7 @@ corresponding adjustment, or the software equalizer (``--vf=eq``).)
7 and 8
Adjust saturation.
(The following keys are valid only when using the corevideo video output
driver.)
(The following keys are valid only on OSX.)
command + 0
Resize movie window to half its original size.
@@ -232,7 +231,7 @@ PREVIOUS and NEXT
Seek backward/forward 1 minute.
(The following keys are only valid if you compiled with TV or DVB input
support and will take precedence over the keys defined above.)
support.)
h and k
Select previous/next channel.
@@ -252,24 +251,6 @@ button 3 and button 4
button 5 and button 6
Decrease/increase volume.
Joystick Control
----------------
left and right
Seek backward/forward 10 seconds.
up and down
Seek forward/backward 1 minute.
button 1
Pause.
button 2
Toggle OSD states: none / seek / seek + timer / seek + timer + total time.
button 3 and button 4
Decrease/increase volume.
USAGE
=====
@@ -314,6 +295,8 @@ file1.mkv ``--a --b --c``
file2.mkv ``--a --b --c``
=============== ===========================
(This is different from MPlayer and mplayer2.)
Also, if any option is changed at runtime (via input commands), they are not
reset when a new file is played.
@@ -408,7 +391,7 @@ profile name ``default`` to continue with normal options.
::
[vo.vdpau]
# Use hardware decoding (this might break playback of some h264 files)
# Use hardware decoding (might break playback of some h264 files)
hwdec=vdpau
[protocol.dvd]
@@ -498,7 +481,7 @@ behavior of mpv.
FFmpeg/Libav:
This library accesses various environment variables. However, they are not
centrally documented, and documenting them is not our job. Therefore, the
centrally documented, and documenting them is not our job. Therefore, this
list is incomplete.
Notable environment variables:
@@ -601,13 +584,10 @@ FILES
EXAMPLES OF MPV USAGE
=====================
Quickstart Blu-ray playing:
Blu-ray playback:
- ``mpv bd:////path/to/disc``
- ``mpv bd:// --bluray-device=/path/to/disc``
Quickstart DVD playing:
``mpv dvd://1``
Play in Japanese with English subtitles:
``mpv dvd://1 --alang=ja --slang=en``
@@ -643,6 +623,6 @@ mpv is a MPlayer fork based on mplayer2, which in turn is a fork of MPlayer.
MPlayer was initially written by Arpad Gereoffy. See the ``AUTHORS`` file for
a list of some of the many other contributors.
MPlayer is (C) 2000-2012 The MPlayer Team
MPlayer is (C) 2000-2013 The MPlayer Team
This man page was written mainly by Gabucino, Jonas Jermann and Diego Biurrun.
+67 -57
View File
@@ -69,8 +69,7 @@
Specify a priority list of audio languages to use. Different container
formats employ different language codes. DVDs use ISO 639-1 two-letter
language codes, Matroska, MPEG-TS and NUT use ISO 639-2 three-letter
language codes, while OGM uses a free-form identifier. mpv prints the
available languages when run in verbose (``-v``) mode. See also ``--aid``.
language codes, while OGM uses a free-form identifier. See also ``--aid``.
.. admonition:: Examples
@@ -183,7 +182,7 @@
offset scale factor, not what the video filter chain or the video output
use.
``--ass-vsfilter-color-compat=<basic|full|force-601|no``
``--ass-vsfilter-color-compat=<basic|full|force-601|no>``
Mangle colors like (xy-)vsfilter do (default: basic). Historically, VSFilter
was not colorspace aware. This was no problem as long as the colorspace
used for SD video (BT.601) was used. But when everything switched to HD
@@ -249,8 +248,8 @@
See ``--geometry`` for details how this is handled with multi-monitor
setups.
Use ``--autofit-larger`` instead if you do not want the window to get
larger.
Use ``--autofit-larger`` instead if you just want to limit the maximum size
of the window, rather than always forcing a window size.
Use ``--geometry`` if you want to force both window width and height to a
specific size.
@@ -307,17 +306,6 @@
out. This delay in reaction time to sudden A/V offsets should be the only
side-effect of turning this option on, for all sound drivers.
``--bandwidth=<bytes>``
Specify the maximum bandwidth for network streaming (for servers that are
able to send content in different bitrates). Useful if you want to watch
live streamed media behind a slow connection. With Real RTSP streaming, it
is also used to set the maximum delivery bandwidth allowing faster cache
filling and stream dumping.
.. note::
Probably broken/useless.
``--untimed``
Do not sleep when outputting video frames. Useful for benchmarks when used
with ``--no-audio.``
@@ -331,6 +319,10 @@
Specify the Blu-ray disc location. Must be a directory with Blu-ray
structure.
.. admonition:: Example
``mpv bd:// --bluray-device=/path/to/bd/``
``--border``, ``--no-border``
Play movie with window border and decorations. Since this is on by
default, use ``--no-border`` to disable the standard window decorations.
@@ -357,7 +349,7 @@
``--cache-default=<kBytes|no>``
Set the size of the cache in kilobytes (default: 320 KB). Using ``no``
will not automatically enable the cache e.h. when playing from a network
will not automatically enable the cache e.g. when playing from a network
stream. Note that using ``--cache`` will always override this option.
``--cache-pause=<no|percentage>``
@@ -433,11 +425,6 @@
libavcodec downmixes the audio into the requested number of channels if
possible.
.. note::
This option is honored by codecs (AC-3 only), filters (surround) and
audio output drivers (OSS at least).
The ``--channels`` option either takes a channel number or an explicit
channel layout. Channel numbers refer to default layouts, e.g. 2 channels
refer to stereo, 6 refers to 5.1.
@@ -446,6 +433,13 @@
lists speaker names, which can be used to express arbitrary channel
layouts (e.g. ``fl-fr-lfe`` is 2.1).
.. note::
Currently, this option is not very useful. The main effect of this
option is that automatic stereo downmixing is disabled. It depends
mainly on the selected audio output and the associated audio subsystem
how playback of files with surround audio will behave.
``--chapter=<start[-end]>``
Specify which chapter to start playing at. Optionally specify which
chapter to end playing at. Also see ``--start``.
@@ -584,7 +578,7 @@
This is default in order to reduce latency when opening HTTP streams.
``--demuxer-lavf-format=<value>``
``--demuxer-lavf-format=<name>``
Force a specific libavformat demuxer.
``--demuxer-lavf-genpts-mode=<auto|lavf|builtin|no>``
@@ -667,12 +661,14 @@
.. admonition:: Example
- ``mpv sample-720x576.yuv --demuxer=rawvideo --demuxer-rawvideo=w=720:h=576``
Play a raw YUV sample.
Play a raw YUV sample::
mpv sample-720x576.yuv --demuxer=rawvideo \
--demuxer-rawvideo=w=720:h=576
``--demuxer-rawvideo-format=<value>``
Colorspace (fourcc) in hex or string for ``--demuxer=rawvideo``
(default: YV12).
(default: ``YV12``).
``--demuxer-rawvideo-mp-format=<value>``
Colorspace by internal video format for ``--demuxer=rawvideo``. Use
@@ -708,6 +704,10 @@
also specify a directory that contains files previously copied directly
from a DVD (with e.g. vobcopy).
.. admonition:: Example
``mpv dvd:// --dvd-device=/path/to/dvd/``
``--dvd-speed=<speed>``
Try to limit DVD speed (default: 0, no change). DVD base speed is 1385
kB/s, so an 8x drive can read at speeds up to 11080 kB/s. Slower speeds
@@ -750,7 +750,7 @@
``--no-fixed-vo``, ``--fixed-vo``
``--no-fixed-vo`` enforces closing and reopening the video window for
multiple files (one (un)initialization for all files).
multiple files (one (un)initialization for each file).
``--flip``
Flip image upside-down.
@@ -959,11 +959,7 @@
See also ``--autofit`` and ``--autofit-larger`` for fitting the window into
a given size without changing aspect ratio.
``--grabpointer``, ``--no-grabpointer``
``--no-grabpointer`` tells the player to not grab the mouse pointer after a
video mode change (``--vm``). Useful for multihead setups.
``--heartbeat-cmd``
``--heartbeat-cmd=<command>``
Command that is executed every 30 seconds during playback via *system()* -
i.e. using the shell. The time between the commands can be customized with
the ``--heartbeat-interval`` option.
@@ -1027,7 +1023,10 @@
.. admonition:: Example
``mpv --http-header-fields='Field1: value1','Field2: value2' http://localhost:1234``
::
mpv --http-header-fields='Field1: value1','Field2: value2' \
http://localhost:1234
Will generate HTTP request::
@@ -1052,7 +1051,7 @@
``<api>`` can be one of the following:
:no: always use software decoding (default)
:vdpau: works with nvidia drivers only, requires ``--vo=vdpau``
:vdpau: requires ``--vo=vdpau`` (Linux only)
:vda: OSX
:crystalhd: Broadcom Crystal HD
@@ -1307,8 +1306,9 @@
``--no-sub``
Do not select any subtitle when the file is loaded.
``--no-sub-visibility``
Disable display of subtitles, but still select and decode them.
``--sub-visibility``, ``--no-sub-visibility``
Can be used to disable display of subtitles, but still select and decode
them.
``--no-video``
Do not play video. With some demuxers this may not work. In those cases
@@ -1334,13 +1334,15 @@
``--osd-bar-align-x=<-1-1>``
Position of the OSD bar. -1 is far left, 0 is centered, 1 is far right.
Fractional values (like 0.5) are allowed.
``--osd-bar-align-y=<-1-1>``
Position of the OSD bar. -1 is top, 0 is centered, 1 is bottom.
Fractional values (like 0.5) are allowed.
``--osd-bar-w=<1-100>``
Width of the OSD bar, in percentage of the screen width (default: 75).
A value of 0.5 means the bar is half the screen wide.
A value of 50 means the bar is half the screen wide.
``--osd-bar-h=<0.1-50>``
Height of the OSD bar, in percentage of the screen height (default: 3.125).
@@ -1374,8 +1376,8 @@
For example, ``#FF0000`` is red. This is similar to web colors.
You can specify transparency by specifying an alpha value in the form
``#AARRGGBB``. 0 is fully transparent, while ``FF`` is opaque (opaque is
default with the shorter color specification).
``#AARRGGBB``. ``00`` is fully transparent, while ``FF`` is opaque (opaque
is default with the shorter color specification).
.. admonition:: Examples
@@ -1480,7 +1482,7 @@
``--playing-msg=<string>``
Print out a string after starting playback. The string is expanded for
properties, e.g. ``--playing-msg=file: ${filename}`` will print the string
properties, e.g. ``--playing-msg='file: ${filename}'`` will print the string
``file:`` followed by a space and the currently played filename.
See `Property Expansion`_.
@@ -1611,6 +1613,8 @@
Particularly useful on slow terminals or broken ones which do not properly
handle carriage return (i.e. ``\r``).
Also see ``--really-quiet`` and ``--msglevel``.
``--quvi-format=<best|default|...>``
Video format/quality that is directly passed to libquvi (default: ``best``).
This is used when opening links to streaming sites like YouTube. The
@@ -1725,10 +1729,6 @@
- ``--reset-on-next-file=""``
Do not reset pause mode.
``--reuse-socket``
(udp:// only)
Allows a socket to be reused by other processes as soon as it is closed.
``--saturation=<-100-100>``
Adjust the saturation of the video signal (default: 0). You can get
grayscale output with this option. Not supported by all video output
@@ -1752,12 +1752,12 @@
multiple displays), this option tells mpv which screen to display the
movie on.
This option does not always work. In these cases, try to use ``--geometry``
to position the window explicitly.
.. admonition:: Note (X11)
This option does not work properly with all window managers.
This option does not work properly with all window managers. In these
cases, you can try to use ``--geometry`` to position the window
explicitly. It's also possible that the window manager provides native
features to control which screens application windows should use.
See also ``--fs-screen``.
@@ -1872,8 +1872,7 @@
Specify a priority list of subtitle languages to use. Different container
formats employ different language codes. DVDs use ISO 639-1 two letter
language codes, Matroska uses ISO 639-2 three letter language codes while
OGM uses a free-form identifier. mpv prints the available languages
when run in verbose (``-v``) mode. See also ``--sid``.
OGM uses a free-form identifier. See also ``--sid``.
.. admonition:: Examples
@@ -1927,6 +1926,14 @@
current level. With values below 100 the initial volume (which is 100%)
will be above the maximum, which e.g. the OSD cannot display correctly.
.. admonition:: Note
The maximum value of ``--volume`` as well as the ``volume`` property
is always 100. Likewise, the volume OSD bar always goes from 0 to 100.
This means that with ``--softvol-max=200``, ``--volume=100`` sets
maximum amplification, i.e. amplify by 200%. The default volume (no
change in volume) will be ``50`` in this case.
``--speed=<0.01-100>``
Slow down or speed up playback by the factor given as parameter.
@@ -1985,7 +1992,8 @@
``--stop-screensaver``, ``--no-stop-screensaver``
Turns off the screensaver (or screen blanker and similar mechanisms) at
startup and turns it on again on exit (default: yes).
startup and turns it on again on exit (default: yes). The screensaver is
always reenabled when the player is paused.
This is not supported on all video outputs or platforms. Sometimes it is
implemented, but does not work (happens often on GNOME). You might be able
@@ -2032,8 +2040,8 @@
- ``--subcp=latin2``
- ``--subcp=cp1250``
If the player was compiled with ENCA support, you can use special syntax
to use that::
If the player was compiled with ENCA support, you can control it with the
following syntax::
--subcp=enca:<language>:<fallback codepage>
@@ -2112,10 +2120,10 @@
to fix the playback speed for frame-based subtitle formats. Works for
external text subtitles only.
.. admonition:: Examples
.. admonition:: Example
- ``--sub-speed=25/23.976`` plays frame based subtitles which have been
loaded assuming a framerate of 23.976 at 25 FPS.
`--sub-speed=25/23.976`` plays frame based subtitles which have been
loaded assuming a framerate of 23.976 at 25 FPS.
``--sws=<n>``
Specify the software scaler algorithm to be used with ``--vf=scale``. This
@@ -2157,7 +2165,9 @@
.. warning::
There is a danger of this causing significant CPU usage, depending on
the properties used and the window manager.
the properties used and the window manager. Changing the window title
is often a slow operation, and if the title changes every frame,
playback can be ruined.
``--tv=<option1:option2:...>``
This option tunes various properties of the TV capture module. For
+5 -7
View File
@@ -22,12 +22,9 @@ in the list. Suboptions are optional and can mostly be omitted.
Available video output drivers are:
``xv`` (X11 only)
Uses the XVideo extension to enable hardware-accelerated playback. This is
Uses the XVideo extension to enable hardware-accelerated display. This is
the most compatible VO on X, but may be low-quality, and has issues with
OSD and subtitle display.
For information about what colorkey is used and how it is drawn, run
mpv with the ``-v`` option and look out for the lines tagged with ``[xv
common]`` at the beginning.
``adaptor=<number>``
Select a specific XVideo adaptor (check xvinfo results).
@@ -265,7 +262,9 @@ Available video output drivers are:
There are some more filters. For a complete list, pass ``help`` as
value, e.g.: ``mpv --vo=opengl:lscale=help``
value, e.g.::
mpv --vo=opengl:lscale=help
``lparam1=<value>``
Set filter parameters. Ignored if the filter is not tunable. These are
@@ -609,8 +608,7 @@ Available video output drivers are:
The following options are only useful if writing your own fragment programs.
``customprog=<filename>``
Load a custom fragment program from ``<filename>``. See
``TOOLS/edgedect.fp`` for an example.
Load a custom fragment program from ``<filename>``.
``customtex=<filename>``
Load a custom "gamma ramp" texture from ``<filename>``. This can be used
in combination with ``yuv=4`` or with the ``customprog`` option.
+3 -2
View File
@@ -44,8 +44,8 @@ SOURCES-$(LIBBS2B) += audio/filter/af_bs2b.c
SOURCES-$(LIBPOSTPROC) += video/filter/vf_pp.c
SOURCES-$(LIBSMBCLIENT) += stream/stream_smb.c
SOURCES-$(MACOSX_BUNDLE) += osdep/macosx_bundle.m
SOURCES-$(COCOA) += video/out/cocoa_common.m \
osdep/macosx_bundle.m \
osdep/macosx_application.m \
osdep/macosx_events.m \
osdep/ar/HIDRemote.m
@@ -294,11 +294,12 @@ DIRS = . \
audio/decode \
audio/filter \
audio/out \
core \
mpvcore \
mpvcore/input \
mpvcore/timeline \
demux \
osdep \
osdep/ar \
stream \
sub \
video \
+1 -1
View File
@@ -1 +1 @@
0.1.4
0.1.6
+4 -2
View File
@@ -389,13 +389,15 @@ static int decode_new_packet(struct sh_audio *sh)
}
int got_frame = 0;
int ret = avcodec_decode_audio4(avctx, priv->avframe, &got_frame, &pkt);
if (ret > 0) {
// At least "shorten" decodes sub-frames, instead of the whole packet.
// At least "mpc8" can return 0 and wants the packet again next time.
if (ret >= 0) {
ret = FFMIN(ret, mpkt->len); // sanity check against decoder overreads
mpkt->buffer += ret;
mpkt->len -= ret;
mpkt->pts = MP_NOPTS_VALUE; // don't reset PTS next time
}
if (mpkt->len == 0 || ret <= 0) {
if (mpkt->len == 0 || ret < 0) {
talloc_free(mpkt);
priv->packet = NULL;
}
Vendored
+4 -22
View File
@@ -316,16 +316,15 @@ Optional features:
--disable-bluray disable Blu-ray support [autodetect]
--disable-dvdread disable libdvdread [autodetect]
--disable-enca disable ENCA charset oracle library [autodetect]
--enable-macosx-bundle enable Mac OS X bundle file locations [disabled]
--disable-pthreads disable Posix threads support [autodetect]
--disable-libass disable subtitle rendering with libass [autodetect]
--disable-libass-osd disable OSD rendering with libass [autodetect]
--enable-rpath enable runtime linker path for extra libs [disabled]
--disable-libpostproc disable postprocess filter (vf_pp) [autodetect]
--disable-libavdevice enable libavdevice demuxers [autodetect]
--disable-libavfilter enable libavfilter [autodetect]
--disable-vf-lavfi enable vf_lavfi libavfilter bridge [audodetect]
--disable-af-lavfi enable af_lavfi libavfilter bridge [audodetect]
--disable-libavdevice disable libavdevice demuxers [autodetect]
--disable-libavfilter disable libavfilter [autodetect]
--disable-vf-lavfi disable vf_lavfi libavfilter bridge [audodetect]
--disable-af-lavfi disable af_lavfi libavfilter bridge [audodetect]
Codecs:
--enable-mng enable MNG input support [autodetect]
@@ -474,7 +473,6 @@ _cdda=auto
_coreaudio=auto
_corevideo=auto
_cocoa=auto
_macosx_bundle=no
_enca=auto
_pthreads=auto
_ass=auto
@@ -708,7 +706,6 @@ for ac_option do
--disable-corevideo) _corevideo=no ;;
--enable-cocoa) _cocoa=yes ;;
--disable-cocoa) _cocoa=no ;;
--enable-macosx-bundle) _macosx_bundle=yes ;;
--enable-manpage) _build_man=yes ;;
--disable-manpage) _build_man=no ;;
@@ -1546,19 +1543,6 @@ fi
echores "$_sys_sysinfo"
if darwin; then
echocheck "Mac OS X Bundle file locations"
if test "$_macosx_bundle" = yes ; then
extra_ldflags="$extra_ldflags -headerpad_max_install_names"
def_macosx_bundle='#define CONFIG_MACOSX_BUNDLE 1'
else
def_macosx_bundle='#undef CONFIG_MACOSX_BUNDLE'
fi
echores "$_macosx_bundle"
fi #if darwin
echocheck "pkg-config"
if $($_pkg_config --version > /dev/null 2>&1); then
if test "$_ld_static"; then
@@ -3078,7 +3062,6 @@ LIBQUVI = $_libquvi4
LIBQUVI9 = $_libquvi9
LIBGUESS = $_libguess
LIRC = $_lirc
MACOSX_BUNDLE = $_macosx_bundle
MNG = $_mng
MPG123 = $_mpg123
OPENAL = $_openal
@@ -3164,7 +3147,6 @@ $def_termios
$def_dl
$def_dos_paths
$def_iconv
$def_macosx_bundle
$def_priority
+23 -4
View File
@@ -863,12 +863,31 @@ static void demux_seek_lavf(demuxer_t *demuxer, float rel_seek_secs,
// API by default, because there are some major issues.
// Set max_ts==ts, so that demuxing starts from an earlier position in
// the worst case.
int r = avformat_seek_file(priv->avfc, -1, INT64_MIN,
priv->last_pts, priv->last_pts, avsflags);
// To make this horrible situation even worse, some lavf demuxers have
// broken timebase handling (everything that uses
// ff_subtitles_queue_seek()), and always uses the stream timebase. So
// we use the timebase and stream index of the first enabled stream
// (i.e. a stream which can participate in seeking).
int stream_index = -1;
AVRational time_base = {1, AV_TIME_BASE};
for (int n = 0; n < priv->num_streams; n++) {
struct sh_stream *stream = priv->streams[n];
AVStream *st = priv->avfc->streams[n];
if (stream && st->discard != AVDISCARD_ALL) {
stream_index = n;
time_base = st->time_base;
break;
}
}
int64_t pts = priv->last_pts;
if (pts != AV_NOPTS_VALUE)
pts = pts / (double)AV_TIME_BASE * av_q2d(av_inv_q(time_base));
int r = avformat_seek_file(priv->avfc, stream_index, INT64_MIN,
pts, pts, avsflags);
// Similar issue as in the normal seeking codepath.
if (r < 0) {
avformat_seek_file(priv->avfc, -1, INT64_MIN,
priv->last_pts, INT64_MAX, avsflags);
avformat_seek_file(priv->avfc, stream_index, INT64_MIN,
pts, INT64_MAX, avsflags);
}
}
}
+13 -4
View File
@@ -188,7 +188,7 @@ typedef struct mkv_demuxer {
uint64_t skip_to_timecode;
int v_skip_to_keyframe, a_skip_to_keyframe;
bool subtitle_preroll;
int subtitle_preroll;
} mkv_demuxer_t;
#define REALHEADER_SIZE 16
@@ -196,6 +196,9 @@ typedef struct mkv_demuxer {
#define RAPROPERTIES4_SIZE 56
#define RAPROPERTIES5_SIZE 70
// Maximum number of subtitle packets that are accepted for pre-roll.
#define NUM_SUB_PREROLL_PACKETS 100
/**
* \brief ensures there is space for at least one additional element
* \param array array to grow
@@ -2266,7 +2269,10 @@ static int handle_block(demuxer_t *demuxer, struct block_info *block_info)
if (mkv_d->v_skip_to_keyframe)
use_this_block = 0;
} else if (track->type == MATROSKA_TRACK_SUBTITLE) {
use_this_block |= mkv_d->subtitle_preroll;
if (!use_this_block && mkv_d->subtitle_preroll) {
mkv_d->subtitle_preroll--;
use_this_block = 1;
}
if (use_this_block) {
if (laces > 1) {
mp_msg(MSGT_DEMUX, MSGL_WARN, "[mkv] Subtitles use Matroska "
@@ -2313,7 +2319,7 @@ static int handle_block(demuxer_t *demuxer, struct block_info *block_info)
if (stream->type == STREAM_VIDEO) {
mkv_d->v_skip_to_keyframe = 0;
mkv_d->skip_to_timecode = 0;
mkv_d->subtitle_preroll = false;
mkv_d->subtitle_preroll = 0;
} else if (stream->type == STREAM_AUDIO)
mkv_d->a_skip_to_keyframe = 0;
@@ -2594,7 +2600,10 @@ static void demux_mkv_seek(demuxer_t *demuxer, float rel_seek_secs,
a_tnum = track->tnum;
}
}
mkv_d->subtitle_preroll = (flags & SEEK_SUBPREROLL) && st_active[STREAM_SUB];
mkv_d->subtitle_preroll = 0;
if ((flags & SEEK_SUBPREROLL) && st_active[STREAM_SUB] &&
st_active[STREAM_VIDEO])
mkv_d->subtitle_preroll = NUM_SUB_PREROLL_PACKETS;
if (!(flags & (SEEK_BACKWARD | SEEK_FORWARD))) {
if (flags & SEEK_ABSOLUTE || rel_seek_secs < 0)
flags |= SEEK_BACKWARD;
+14 -12
View File
@@ -888,7 +888,7 @@ exit:
static void load_playback_resume(m_config_t *conf, const char *file)
{
char *fname = get_playback_resume_config_filename(file);
if (fname) {
if (fname && mp_path_exists(fname)) {
// Never apply the saved start position to following files
m_config_backup_opt(conf, "start");
try_load_config(conf, fname, false);
@@ -4151,6 +4151,19 @@ static void play_current_file(struct MPContext *mpctx)
mpctx->add_osd_seek_info &= OSD_SEEK_INFO_EDITION;
if (opts->reset_options) {
for (int n = 0; opts->reset_options[n]; n++) {
const char *opt = opts->reset_options[n];
if (opt[0]) {
if (strcmp(opt, "all") == 0) {
m_config_backup_all_opts(mpctx->mconfig);
} else {
m_config_backup_opt(mpctx->mconfig, opt);
}
}
}
}
load_per_protocol_config(mpctx->mconfig, mpctx->filename);
load_per_extension_config(mpctx->mconfig, mpctx->filename);
load_per_file_config(mpctx->mconfig, mpctx->filename, opts->use_filedir_conf);
@@ -4168,17 +4181,6 @@ static void play_current_file(struct MPContext *mpctx)
load_per_file_options(mpctx->mconfig, mpctx->playlist->current->params,
mpctx->playlist->current->num_params);
if (opts->reset_options) {
for (int n = 0; opts->reset_options[n]; n++) {
const char *opt = opts->reset_options[n];
if (strcmp(opt, "all") == 0) {
m_config_backup_all_opts(mpctx->mconfig);
} else {
m_config_backup_opt(mpctx->mconfig, opt);
}
}
}
// We must enable getch2 here to be able to interrupt network connection
// or cache filling
if (opts->consolecontrols && !opts->slave_mode) {
+1 -1
View File
@@ -550,7 +550,7 @@ const m_option_t mp_opts[] = {
{"auto", SOFTVOL_AUTO})),
OPT_FLOATRANGE("softvol-max", softvol_max, 0, 10, 10000),
OPT_INTRANGE("volstep", volstep, 0, 0, 100),
OPT_FLOATRANGE("volume", mixer_init_volume, 0, -1, 10000),
OPT_FLOATRANGE("volume", mixer_init_volume, 0, -1, 100),
OPT_CHOICE("mute", mixer_init_mute, M_OPT_OPTIONAL_PARAM,
({"auto", -1},
{"no", 0},
+26 -7
View File
@@ -40,12 +40,13 @@
#if defined(__MINGW32__)
#include <windows.h>
#include <shlobj.h>
#elif defined(__CYGWIN__)
#include <windows.h>
#include <sys/cygwin.h>
#endif
#ifdef CONFIG_MACOSX_BUNDLE
#ifdef CONFIG_COCOA
#include "osdep/macosx_bundle.h"
#endif
@@ -53,7 +54,7 @@
typedef char *(*lookup_fun)(const char *);
static const lookup_fun config_lookup_functions[] = {
mp_find_user_config_file,
#ifdef CONFIG_MACOSX_BUNDLE
#ifdef CONFIG_COCOA
get_bundled_path,
#endif
mp_find_global_config_file,
@@ -77,10 +78,24 @@ char *mp_find_config_file(const char *filename)
char *mp_find_user_config_file(const char *filename)
{
char *homedir = NULL, *buff = NULL;
static char *homepath = NULL;
#ifdef __MINGW32__
static char *config_dir = "mpv";
char *config_dir = "mpv";
if (homepath == NULL) {
char buf[MAX_PATH];
if (SHGetFolderPathA(NULL, CSIDL_LOCAL_APPDATA|CSIDL_FLAG_CREATE, NULL,
SHGFP_TYPE_CURRENT, buf) == S_OK) {
homepath = buf;
}
}
#else
static char *config_dir = ".mpv";
char *config_dir = ".mpv";
if (homepath == NULL) {
homepath = getenv("HOME");
}
#endif
#if defined(__MINGW32__) || defined(__CYGWIN__)
char *temp = NULL;
@@ -88,15 +103,19 @@ char *mp_find_user_config_file(const char *filename)
/* Hack to get fonts etc. loaded outside of Cygwin environment. */
int i, imax = 0;
int len = (int)GetModuleFileNameA(NULL, exedir, 260);
for (i = 0; i < len; i++)
for (i = 0; i < len; i++) {
if (exedir[i] == '\\') {
exedir[i] = '/';
imax = i;
}
}
exedir[imax] = '\0';
if (filename)
if (filename) {
temp = mp_path_join(NULL, bstr0(exedir), bstr0(filename));
}
if (temp && mp_path_exists(temp) && !mp_path_isdir(temp)) {
homedir = exedir;
@@ -106,7 +125,7 @@ char *mp_find_user_config_file(const char *filename)
#endif
if ((homedir = getenv("MPV_HOME")) != NULL) {
config_dir = "";
} else if ((homedir = getenv("HOME")) == NULL) {
} else if ((homedir = homepath) == NULL) {
#if defined(__MINGW32__) || defined(__CYGWIN__)
homedir = exedir;
#else
+10 -1
View File
@@ -432,11 +432,20 @@ static bool psn_matches_current_process(char *psn_arg_to_check)
return [real_psn isEqualToString:in_psn];
}
static bool bundle_started_from_finder(int argc, char **argv)
{
bool bundle_detected = [[NSBundle mainBundle] bundleIdentifier];
bool pre_mavericks_args = argc==2 && psn_matches_current_process(argv[1]);
bool post_mavericks_args = argc==1;
return bundle_detected && (pre_mavericks_args || post_mavericks_args);
}
void macosx_finder_args_preinit(int *argc, char ***argv)
{
Application *app = mpv_shared_app();
if (*argc==2 && psn_matches_current_process((*argv)[1])) {
if (bundle_started_from_finder(*argc, *argv)) {
macosx_redirect_output_to_logfile("mpv");
macosx_wait_fileopen_events();
+1
View File
@@ -736,6 +736,7 @@ static int stream_enable_cache(stream_t **stream, int64_t size, int64_t min,
cache->url = talloc_strdup(cache, orig->url);
cache->mime_type = talloc_strdup(cache, orig->mime_type);
cache->demuxer = talloc_strdup(cache, orig->demuxer);
cache->lavf_type = talloc_strdup(cache, orig->lavf_type);
cache->opts = orig->opts;
cache->start_pos = orig->start_pos;
+6 -2
View File
@@ -729,8 +729,12 @@ static int demux_open_tv(demuxer_t *demuxer, enum demux_check check)
/* get IMAGE FORMAT */
int fourcc;
funcs->control(tvh->priv, TVI_CONTROL_VID_GET_FORMAT, &fourcc);
sh_video->gsh->codec = "rawvideo";
sh_video->format = fourcc;
if (fourcc == MP_FOURCC_MJPEG) {
sh_video->gsh->codec = "mjpeg";
} else {
sh_video->gsh->codec = "rawvideo";
sh_video->format = fourcc;
}
/* set FPS and FRAMETIME */
+1
View File
@@ -410,6 +410,7 @@ static void uninit_avctx(sh_video_t *sh)
#if !HAVE_AVUTIL_REFCOUNTING
mp_buffer_pool_free(&ctx->dr1_buffer_pool);
#endif
ctx->last_sample_aspect_ratio = (AVRational){0, 0};
}
static void uninit(sh_video_t *sh)