summaryrefslogtreecommitdiffstats
path: root/DOCS
Commit message (Collapse)AuthorAgeFilesLines
* man: expand on the smoothmotion documentationStefano Pigozzi2015-01-281-4/+13
| | | | | Hopefully this will clear up how the thing is supposed to work (and that it's not SVP, nor MVTools).
* vf_ilpack: remove this filterwm42015-01-271-13/+0
| | | | | | | | This was apparently useful for correct interlaced scaling (although I don't know anyone who used this). It was rarely used (if at all), had an inconvenient output format (packed YUV), and now has a better solution in libavfilter (using the libavfilter "scale" filter via vf_lavfi). There is no reason to keep this filter any longer.
* vf_divtc: remove this filterwm42015-01-271-62/+0
| | | | | Better solutions are available in vf_vapoursynth and vf_lavfi. The only user I know who used this is now using vf_vapoursynth.
* vf_phase: remove this filterwm42015-01-271-52/+0
| | | | If you really want it, it's in libavfilter and can be used via vf_lavfi.
* vf_swapuv: remove this filterwm42015-01-271-3/+0
| | | | | | It's entirely useless. I left it in for a while, because the analog TV code had a transitional bug that could switch chroma planes, but it was fixed long ago. It's also available in libavfilter.
* manpage: fix rst2pdf buildMartin Herkt2015-01-271-5/+5
| | | | Uhhh… What???
* command: export more details about file seekabilitywm42015-01-261-0/+8
| | | | | | | | | | If a file is unseekable (consider e.g. a http server without resume functionality), but the stream cache is active, the player will enable seeking anyway. Until know, client API user couldn't know that this happens, and it has implications on how well seeking will work. So add a property which exports whether this situation applies. Fixes #1522.
* msg: add --log-file optionwm42015-01-261-0/+5
| | | | | | | | | This allows getting the log at all with --no-terminal and without having to retrieve log messages manually with the client API. The log level is hardcoded to -v. A higher log level would lead to too much log output (huge file sizes and latency issues due to waiting on the disk), and isn't too useful in general anyway. For debugging, the terminal can be used instead.
* manpage: document 'A' keywm42015-01-261-0/+3
| | | | Of course this was forgotten in commit 189087c.
* manpage: fix typoDiogo Franco (Kovensky)2015-01-261-1/+1
|
* manpage: fix smoothmotion-threshold value rangewm42015-01-261-1/+1
|
* options: make --hls-bitrate=max the defaultwm42015-01-261-2/+2
| | | | | | | The previous default ("no") seemed to be equivalent to "min" in practice (though it might depend on the website, which is even worse). Better just select the best stream by default.
* manpage: describe some more config directory artifactswm42015-01-261-9/+27
|
* vo_opengl, x11: implement icc-profile-autowm42015-01-261-1/+1
| | | | | | | | | | | | | | | | | This queries the _ICC_PROFILE property on the root window. It also tries to reload the ICC when it changes, or if the mpv window changes the monitor. (If multiple monitors are covered, mpv will randomly select one of them.) The official spec is a dead link on freedesktop.org, so don't blame me for any bugs. Note that this assumes that Xinerama screen numbers match the way mpv enumerates the xrandr monitors. Although there is some chance that this matches, it most likely doesn't, and we actually have to do complicated things to map the screen numbers. If it turns out that this is required, I will fix it as soon as someone with a suitable setup for testing the fix reports it.
* vo_opengl: make "mitchell" the hq default filter for downscalingwm42015-01-261-1/+1
| | | | | | | | | | | | | Seems like several people agree that it's a good filter for downscaling. Setting this option by default may also prevent people from accidentally using an unsuitable filter for downscaling by setting "scale" and without being aware of the impliciations (maybe). On the other hand, this change is not strictly backwards compatible for the same reasons. Also, allow disabling this option with scale-down="" (before this, not setting it was the only way to do this - not possible anymore if it's set by default). This is what the change in handle_scaler_opt() does.
* input, player: new command for mouse eventxylosper2015-01-231-0/+17
| | | | | | | New command `mouse <x> <y> [<button> [single|double]]` is introduced. This will update mouse position with given coordinate (`<x>`, `<y>`), and additionally, send single-click or double-click event if `<button>` is given.
* vo: fix disabling/enabling smoothmotion at runtimewm42015-01-231-0/+3
| | | | | | | | | | | | | vo.c queried the VO at initialization whether it wants to be updated on every display frame, or every video frame. If the smoothmotion option was changed at runtime, the rendering mode in vo.c wasn't updated. Just let vo_opengl set the mode directly. Abuse the existing vo_set_flip_queue_offset() function for this. Also add a comment suggesting the use of --display-fps to the manpage, which doesn't have anything to do with the rest of this commit, but is important to make smoothmotion run well.
* manpage: minor changeswm42015-01-235-20/+28
| | | | | | Mostly related to vo_opengl. Fix the opengl lscale option in the qml example too.
* command: export file format as propertywm42015-01-231-0/+5
| | | | | | | | | | | | Repurpose demuxer->filetype for this. It used to be used to print a human readable format description; change it to a symbolic format name and export it as property. Unfortunately, libavformat has its own weird conventions, which are reflected through the new property, e.g. the .mp4 case mentioned in the manpage. Fixes #1504.
* build: remove bogus client API examples buildwm42015-01-233-5/+9
| | | | | | | | | | | The symlink trick made waf go crazy (deleting source files, getting tangled up in infinite recursion... I wish I was joking). This means we still can't build the client API examples in a reasonable way using the include files of the local repository (instead of globally installed headers). Not building them at all is better than deleting source files. Instead, provide some manual instructions how to build each example (except for the Qt examples, which provide qmake project files).
* vf_vavpp: add more deinterlacing algorithmswm42015-01-231-0/+4
| | | | | | These are untested due to lack of hardware. From what I've heard, the drivers are pretty buggy, so it's not clear how well this works, if at all.
* vo_opengl: add smoothmotion frame blendingStefano Pigozzi2015-01-231-0/+9
| | | | | | | | | | | | | | | | | | | SmoothMotion is a way to time and blend frames made popular by MadVR. It's intended behaviour is to remove stuttering caused by mismatches between the display refresh rate and the video fps, while preserving the video's original artistic qualities (no soap opera effect). It's supposed to make 24fps video playback on 60hz monitors as close as possible to a 24hz monitor. Instead of drawing a frame once once it's pts has passed the vsync time, we redraw at the display refresh rate, and if we detect the vsync is between two frames we interpolated them (depending on their position relative to the vsync). We actually interpolate as few frames as possible to avoid a blur effect as much as possible. For example, if we were to play back a 1fps video on a 60hz monitor, we would blend at most on 1 vsync for each frame (while the other 59 vsyncs would be rendered as is). Frame interpolation is always done before scaling and in linear light when possible (an ICC profile is used, or :srgb is used).
* manpage: vo_opengl: describe how to get lanczos2/lanczos3wm42015-01-221-0/+3
| | | | | | | These aliases were removed in commit 1ec77214. Add a notice to the manpage how to get these back. Apparently, "lanczos2" and "lanczos3" were the only interesting aliases possibly used by someone, so the description is limited to these two.
* vo_opengl: remove scale-sep and indirect optionsNiklas Haas2015-01-221-23/+1
| | | | | | | | | | | | These are now auto-detected sanely; and enabled whenever it would be a performance or quality gain (which is pretty much everything except bilinear/bilinear scaling). Perhaps notably, with the absence of scale_sep, there's no more way to use convolution filters on hardware without FBOs, but I don't think there's hardware in existence that doesn't have FBOs but is still fast enough to run the fallback (slow) 2D convolution filters, so I don't think it's a net loss.
* vo_opengl: rename all scale options to make more senseNiklas Haas2015-01-221-31/+24
| | | | | This emphasizes the fact that scale is used for *all* image upscaling, with cscale only serving a minor role for subsampled material.
* vo_opengl: always prefer indirect scalingNiklas Haas2015-01-221-9/+14
| | | | | | This is better even for non-separable. The only exception is when using bilinear for both lscale and cscale. I've fixed the documentation/comments to make more sense.
* vo_opengl: implement naive anti-ringingNiklas Haas2015-01-221-4/+13
| | | | | | | | This is not quite the same thing as madVR's antiringing algorithm, but it essentially does something similar. Porting madVR's approach to elliptic coordinates will take some amount of thought.
* vo_opengl: make the default radius 3.0 and simplify scaler documentationNiklas Haas2015-01-211-12/+14
| | | | | | | This also fixes the maximum range to 16.0, which was previously set to 32.0 and incorrectly documented as 8.0. 16 taps should be more than anybody will ever need, but it's the highest radius that's supported by all affected filters.
* manpage: vo_opengl: change scaler descriptions and recommendationswm42015-01-211-37/+13
| | | | Based on suggestions by lachs0r.
* vo_opengl_old: remove this VOwm42015-01-201-180/+1
| | | | | At this point, there is probably no hardware left that doesn't do OpenGL 2.1, and at the same time is fast enough to handle video.
* README: extend dependecy list, link Windows compilation docswm42015-01-201-1/+1
| | | | Also, fix vo.rst, don't want to waste a separate commit on this.
* vo_opengl: remove cscale-down suboptionwm42015-01-201-3/+9
| | | | For an explanation see the additions to the manpage.
* client API: notify API user on event queue overflowwm42015-01-191-0/+1
| | | | | | | | | | | | | | | Before this, we merely printed a message to the terminal. Now the API user can determine this properly. This might be important for API users which somehow maintain complex state, which all has to be invalidated if (state-changing) events are missing due to an overflow. This also forces the client API user to empty the event queue, which is good, because otherwise the event queue would reach the "filled up" state immediately again due to further asynchronous events being added to the queue. Also add some minor improvements to mpv_wait_event() documentation, and some other minor cosmetic changes.
* x11: add --on-all-workspaces option and propertywm42015-01-162-0/+7
| | | | Fixes #1469.
* player: add --autofit-smaller optionwm42015-01-161-0/+11
| | | | | | | | Fixes #1472. (Maybe these options should have been named --autofit-max and --autofit-min, but since --autofit-larger already exists, use --autofit-smaller for symmetry.)
* manpage: fix osd-ass-cc exampleswm42015-01-161-1/+4
| | | | | | | | The "\\" escape was rendered as "\" on the website. I'm hoping quoting this in ``...`` will render it correctly. Also add an example for show_text, which awkwardly does not require escaping the "\".
* vo_opengl: get rid of approx-gamma and make it the default as per BT.1886Niklas Haas2015-01-161-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | After finding out more about how video mastering is done in the real world it dawned upon me why the "hack" we figured out in #534 looks so much better. Since mastering studios have historically been using only CRTs, the practice adopted for backwards compatibility was to simulate CRT responses even on modern digital monitors, a practice so ubiquitous that the ITU-R formalized it in R-Rec BT.1886 to be precisely gamma 2.40. As such, we finally have enough proof to get rid of the option altogether and just always do that. The value 1.961 is a rounded version of my experimentally obtained approximation of the BT.709 curve, which resulted in a value of around 1.9610336. This is the closest average match to the source brightness while preserving the nonlinear response of the BT.1886 ideal monitor. For playback in dark environments, it's expected that the gamma shift should be reproduced by a user controlled setting, up to a maximum of 1.224 (2.4/1.961) for a pitch black environment. More information: https://developer.apple.com/library/mac/technotes/tn2257/_index.html
* manpage: changes.rst: document vo_opengl's placebo featuresNiklas Haas2015-01-151-1/+5
|
* vo_opengl: add ewa_lanczos upscaler (aka jinc)Niklas Haas2015-01-151-1/+7
| | | | | This is the polar (elliptic weighted average) version of lanczos. This introduces a general new form of polar filters.
* DOCS/client_api_examples: fix locale nonsense in qml exampleswm42015-01-152-0/+10
| | | | | | | The Qt example already does this. I hoped this was restricted to QApplication only, but apparently Qt repeated this mistake with QGuiApplication (QGuiApplication was specifically added for QtQuick at a much later point, even though QApplication inherits from it).
* ao_pcm: add append modewm42015-01-141-0/+4
| | | | | Pretty useful for debugging, although a bit useless or possibly misleading too (see comments in the manpage).
* manpage: fix references to vf_ppwm42015-01-132-4/+3
| | | | | | It was removed, but is still available through FFmpeg. Fixes #1468.
* manpage: improve --title descriptionwm42015-01-121-5/+6
| | | | | It might be rather surprising that --title also sets the audio stream title (for PulseAudio and wasapi), so it certainly should be mentioned.
* x11: support XEmbedwm42015-01-121-6/+9
| | | | | | | | | | | | Seems to work with GtkSocket and passing the gtk_socket_get_id() value via "wid" option to mpv. One caveat is that using <tab> to move input focus from mpv to GTK does not work. It seems we would have to interpret <tab> ourselves in this case. I'm not sure if we really should do this - it would probably require emulating some other typical conventions too. I'm not sure if an embedder could do something about this on the toolkit level, but in theory it would be possible, so leave it as is for now.
* player: change --display-tags behaviorwm42015-01-121-1/+2
| | | | | | | | | | | | | | | | | | Remove the "all" special-behavior, and instead interpret trailing "*" characters. --display-tags=all is replaced by --display-tags=* as a special-case of the new behavior. See #1404. Note that the most straight-forward value for matchlen in the normal case would be INT_MAX, because it should be using the entire string. I used keylen+1 instead, because glibc seems to handle this case incorrectly: snprintf(buf, sizeof(buf), "%.*s", INT_MAX, "hello"); The result is empty, instead of just containing the string argument. This might be a glibc bug; it works with other libcs (even MinGW-w64).
* command: fix property naming conventionwm42015-01-101-2/+2
| | | | Use "-" instead of "_" as separator.
* command: change properties added in previous commitwm42015-01-101-5/+9
| | | | | | | | | | | | | Make their meaning more exact, and don't pretend that there's a reasonable definition for "bits-per-pixel". Also make unset fields unavailable. average_depth still might be inconsistent: for example, 10 bit 4:2:0 is identified as 24 bits, but RGB 4:4:4 as 12 bits. So YUV formats seemingly drop the per-component padding, while RGB formats do not. Internally it's consistent though: 10 bit YUV components are read as 16 bit, and the padding must be 0 (it's basically like an odd fixed- point representation, rather than a bitfield).
* command.c: new subproperties for video-params: bpp and depthxylosper2015-01-101-0/+6
| | | | | | | | bpp(bits-per-pixel) and depth(bit-depth for color component) can be calculated from pixelformat technically but it requires massive informations to be implemented in client side. These subproperties are provided for convenience.
* DOCS/client_api_examples: qml_direct: QWindow::size() is not thread-safewm42015-01-092-3/+4
| | | | | | We still keep the window pointer, because we want to call QQuickWindow::resetOpenGLState() (which runs on the rendering thread only). Interesting mess...
* DOCS/client_api_examples: qml: reduce number of fileswm42015-01-094-119/+116
| | | | This is annoying.
* DOCS/compile-windows.md: fix pkg-config directoryJames Ross-Gowan2015-01-091-2/+4
|
* video: Add sigmoidal upscaling to avoid ringing artifactsNiklas Haas2015-01-091-1/+13
| | | | | | | | | This avoids issues when upscaling directly in linear light, and is the recommended way to upscale images according to imagemagick. The default slope of 6.5 offers a reasonable compromise between ringing artifacts eliminated and ringing artifacts introduced by sigmoid-upscaling. Same goes for the default center of 0.75.
* vo_opengl_cb: introduce frame queuexylosper2015-01-081-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation of opengl-cb kept only latest flipped frame. This can cause massive frame drops because rendering is done asynchronously and only the latest frame can be rendered. This commit introduces frame queue and releated options to opengl-cb. frame-queue-size: the maximum size of frame queue (1-100, default: 1) frame-drop-mode: behavior when frame queue is full (pop, clear, default: pop) The frame queue holds delayed frames and drops frames if the frame queue is overflowed with next method: 'pop' mode: drops all the oldest frames overflown. 'clear' mode: drops all frames in queue and clear it. With default options(frame-queue-size=1:frame-drop-mode=pop), opengl-cb behaves in the same way as previous implementation effectively. For frame-queue-size > 1, opengl-cb tries to calls update() without waiting next flip_page() in order to consume queued frames. Signed-off-by: wm4 <wm4@nowhere>
* DOCS: add instructions for building with MSYS2James Ross-Gowan2015-01-082-91/+209
| | | | | | mpv can be built natively on a Windows machine using MSYS2. Add detailed instructions on how to build and merge them with the existing instructions for cross-compilation.
* DOCS/client_api_examples: add an alternative qml examplewm42015-01-086-0/+293
| | | | | | | | | | | This one avoids use of a FBO. It's less flexible, because it uses works around the whole QML rendering API. It seems to be the only way to get OpenGL rendering without any indirections, though. Parts of this example were insipired by Qt's "Squircle" example. Also add a README file with a short description of each example, to reduce the initial confusing.
* ao_pulse: disable latency calculation hacks by defaultwm42015-01-071-2/+7
| | | | | | | | | | | | | | This used to be required to workaround PulseAudio bugs. Even later, when the bugs were (partially?) fixed in PulseAudio, I had the feeling the hacks gave better behavior. On the other hand, I couldn't actually reproduce any bad behavior without the hacks lately. On top of this, it seems our hacks sometimes perform much worse than PulseAudio's native implementation (see #1430). So disable the hacks by default, but still leave the code and the option in case it still helps somewhere. Also, being able to blame PulseAudio's code by using its native API is much easier than trying to debug our own (mplayer2-derived) hacks.
* stream_dvb: Add possibility to dump a full transponder.Oliver Freyermuth2015-01-061-0/+11
| | | | | | | | | | | | Was already possible before by injecting the magic PID 8192 into channels.conf, the flag makes this much more useable and we also have it documented. Useful not only for debugging, but also for incomplete channels.conf (mplayer format...), multi-channel recording, or channels which do dynamic PID switchng. full-transponder is also useful for channels which switch PIDs on-the-fly. ffmpeg can handle this, but it needs the full stream with all PIDs.
* manpage: dvb: Add some information on VDR channel list support.Oliver Freyermuth2015-01-061-0/+6
| | | | Only really helpful for DVB-S for now.
* DOCS/client_api_examples: qml: add test for gamma controlwm42015-01-063-11/+29
| | | | Provides a dumb test for the functionality added in the previous commit.
* DOCS/client_api_examples: qtexample: demonstrate multiple mpv instanceswm42015-01-062-0/+10
| | | | Multiple client API contexts can exist in the same process.