summaryrefslogtreecommitdiffstats
path: root/DOCS
Commit message (Collapse)AuthorAgeFilesLines
* input: use libwaio for pipe input on Windowswm42014-09-141-0/+9
| | | | | | | | | | | | Use libwaio to read from pipes (stdin or named pipes) on Windows. This liberates us from nasty issues, such as pipes (as created by most programs) not being possible to read in a non-blocking or event-driven way. Although it would be possible to do that in a somewhat sane way on Vista+, it's still not easy, and on XP it's especially hard. libwaio handles these things for us. Move pipe.c to pipe-unix.c, and remove Windows specific things. Also adjust the input.c code to make this work cleanly.
* input: "quit_watch_later" and "stop" are abort commandswm42014-09-131-2/+8
| | | | | | | | | This means they get special handling for asynchronously aborting playback, even if the player is "stuck". Also document "stop". It seems somewhat useful for client API users (although that will be implemented properly only in the following commits.)
* manpage: document shift+pgup/pgdwn bindingswm42014-09-131-0/+4
|
* lua: synchronously wait until scripts are loadedwm42014-09-061-0/+9
| | | | | | | | | | | | | | | | | This makes the player wait until each script is loaded. Do this to give the script a chance to setup all its event handlers. It might also be useful to allow a script to change options that matter for playback. While waiting for a script to be loaded, the player actually accepts input. This is needed because the scripts can execute player commands anyway while they are being "loaded". The player won't react to most commands though: it can't quit or navigate the playlist in this state. For deciding whether a script is finally loaded, we use a cheap hack: if mpv_wait_event() is called, it's considered loaded. Let's hope this is good enough. I think it's better than introducing explicit API for this. Although I'm sure this will turn out as too simplistic some time in the future, the same would probably happen with a more explicit API.
* vo_corevideo: remove this VOStefano Pigozzi2014-09-062-8/+1
| | | | | | | This was kept in the codebase because it is slightly faster than --vo=opengl on really old Intel cards (from the GMA era). Time to kill it, and let it rest. Fixes #1061
* win32: add tmpfile() replacementJames Ross-Gowan2014-09-051-3/+2
| | | | | | | | | | | The Windows version of tmpfile is actually pretty broken. It tries to create the file in the root directory of the current drive, which means on Vista and up, it normally fails due to insufficient permissions. Replace it with a version that uses GetTempPath. Also remove the Windows-specific note about automatic deletion of the cache file. FILE_FLAG_DELETE_ON_CLOSE is available in NT, and it should be pretty reliable.
* manpage: fix sub_add descriptionwm42014-09-051-1/+1
| | | | | It is in fact selected. The manpage wasn't updated when this was changed.
* audio: make buffer size configurablewm42014-09-051-0/+14
| | | | Really only for testing.
* player: add --media-title optionwm42014-09-021-0/+5
| | | | Requested by ChrisK2.
* player: add --osd-playing-msg optionwm42014-09-021-0/+7
|
* player: simplistic HLS bitrate selectionwm42014-09-011-2/+11
| | | | | | --hls-bitrate=min/max lets you select the min or max bitrate. That's it. Something more sophisticated might be possible, but is probably not even worth the effort.
* command: remove broken quvi-format propertywm42014-09-012-10/+0
| | | | Never really worked, and libquvi is probably a lost cause anyway.
* man: fix a whole bunch of typosMartin Herkt2014-09-0111-130/+130
|
* player: always load playlistswm42014-08-311-14/+6
| | | | | | | | | Until now, you had to use --load-unsafe-playlists or --playlist to get playlists loaded. Change this and always load playlists by default. This still attempts to reject unsafe URLs. For example, trying to invoke libavdevice pseudo-demuxer is explicitly prevented. Local paths and any http links (and some more) are always allowed.
* x11: when using --wid, inherit event flags from parent windowwm42014-08-311-0/+1
| | | | | | | | | | | | | | | | | | | When embedding a X window, it's hard to control whether it receives mouse/keyboard input or not. It seems the X protocol itself makes this hard (basically due to the outdated design mismatching with modern toolkits), and we have to take care of these things explicitly. Simply do this by manually querying and using the parent window event flags. This restores some MPlayer behavior (it doesn't add back exactly the same code, but it's very similar). This probably has some potential to interfere with libmpv embedding, so bump the client API minor. CC: @mpv-player/stable (if applied, client-api-changes.rst has to be adjusted to include the 0.5.2 release)
* lua: expose mp_getcwd through mp.utilsOtto Modinos2014-08-311-0/+4
|
* manpage: be more explicit about "estimated-..." propertieswm42014-08-311-2/+7
| | | | | | In particular, use the note markup. The issue about rounded timestamps is mostly with respect to Matroska (which usually rounds them to milliseconds), which somewhat adds to the reliability issue.
* video: initial Matroska 3D supportwm42014-08-301-0/+16
| | | | | | | | | | | | | | | | | | | | | This inserts an automatic conversion filter if a Matroska file is marked as 3D (StereoMode element). The basic idea is similar to video rotation and colorspace handling: the 3D mode is added as a property to the video params. Depending on this property, a video filter can be inserted. As of this commit, extending mp_image_params is actually completely unnecessary - but the idea is that it will make it easier to integrate with VOs supporting stereo 3D mogrification. Although vo_opengl does support some stereo rendering, it didn't support the mode my sample file used, so I'll leave that part for later. Not that most mappings from Matroska mode to vf_stereo3d mode are probably wrong, and some are missing. Assuming that Matroska modes, and vf_stereo3d in modes, and out modes are all the same might be an oversimplification - we'll see. See issue #1045.
* cache_file: add a mode that creates a temporary filewm42014-08-301-15/+36
| | | | | | | Since we have to be portable, our options for creating temporary files are somewhat limited. tmpfile() happens to be available everywhere, so use that. This function doesn't allow having a "visible" filename or location, so we use the magic string "TMP" for this.
* player: reduce default demuxer cachewm42014-08-301-1/+1
| | | | | | | A (hopefully) temporary hack to make stream switching delays tolerable. It's not clear how this should be handled (either executing a precise seek on track switching, or always enabling all streams), so get this issue out of the way for now by picking a rather low value.
* manpage: document that --cache-file doesn't work with ordered chapterswm42014-08-301-0/+2
|
* manpage: fix minor grammar issuewm42014-08-291-1/+1
|
* command: export demuxer cache info propertieswm42014-08-281-0/+9
|
* player: redo how stream caching and pausing on low cache workswm42014-08-271-14/+9
| | | | | | | | | | | | | | | | | | | Add the --cache-secs option, which literally overrides the value of --demuxer-readahead-secs if the stream cache is active. The default value is very high (10 seconds), which means it can act as network cache. Remove the old behavior of trying to pause once the byte cache runs low. Instead, do something similar wit the demuxer cache. The nice thing is that we can guess how many seconds of video it has cached, and we can make better decisions. But for now, apply a relatively naive heuristic: if the cache is below 0.5 secs, pause, and wait until at least 2 secs are available. Note that due to timestamp reordering, the estimated cached duration of video might be inaccurate, depending on the file format. If the file format has DTS, it's easy, otherwise the duration will seemingly jump back and forth.
* vo_opengl: add parameter to gaussian filterBin Jin2014-08-261-1/+9
| | | | | | | | | | Add a new parameter 'p' to gaussian filter. The new formula used a different base taken from fmtconv plugin, so that the new parameter is exactly same as the one used in Avisynth and Vapoursynth. The new default value is 2 / log(2) * 10, with the default value it conforms to the original kernel taken from vector-agg.
* vo_opengl: add radius options for filtersBin Jin2014-08-261-5/+16
| | | | | | | Add two new options, make it possible for user to set the radius for some of the filters with no fixed radius. Also add three new filters with the new radius parameter supported.
* vo_opengl: add cparam1 and cparam2 optionsBin Jin2014-08-261-0/+7
| | | | | | Although cscale is rarely used, it's possible that params of cscale are accidentally set to lparam1 and lparam2, which might cause unexpected results.
* manpage: mention that mp.commandv doesn't expand propertiesOtto Modinos2014-08-251-0/+4
| | | | | | | | The little lua snippet at #488 as well as the actual implementation seems to indicate that not expanding properties is indeed the correct behavior. Document that. Signed-off-by: wm4 <wm4@nowhere>
* options: compatibility hack for --slave-brokenwm42014-08-251-0/+2
| | | | | | | Seems some programs were still relying on it. Whatever, it's not hard to support. CC: @mpv-player/stable
* ao_dsound: raise default buffer size to 200ms, make it configurablewm42014-08-221-0/+3
|
* manpage: remove duplicated contentBin Jin2014-08-221-29/+0
| | | | | | | Probably be accidentally added in b6b8bffd. CC: @mpv-player/stable Signed-off-by: wm4 <wm4@nowhere>
* options.rst: fix warningAlexander Preisinger2014-08-201-1/+1
|
* command: add estimated-frame-count & estimated-frame-number propertiesAndrey Morozov2014-08-191-0/+7
| | | | Signed-off-by: wm4 <wm4@nowhere>
* manpage: fix opengl-hq defaultswm42014-08-181-1/+1
| | | | | | The FBO format was changed some time ago. CC: @mpv-player/stable
* DOCS/tech-overview.txt: some updateswm42014-08-181-17/+35
|
* video: enable framedropping by defaultwm42014-08-171-4/+4
|
* demux: enable thread by defaultwm42014-08-161-1/+3
| | | | And change the defaults for the other queue options to reduce latency.
* demux: add option to control the readahead buffer by a duration valuewm42014-08-161-3/+13
| | | | | | | | | | | | | --demuxer-readahead-secs now controls how much the demuxer should readahead by an amount of seconds. This is based on the raw packet timestamps. It's not always very exact. For example, h264 in Matroska does not store any linear timestamps (only PTS values which are going to be reordered by the decoder), so this heuristic is usually off by several hundred milliseconds. The decision whether to readahead is basically OR-ed with the other --demuxer-readahead-packets options. Change the manpage descriptions to subtly convey these semantics.
* video: add --display-fps switch to control framedrop FPSwm42014-08-161-0/+7
| | | | | | Since the display FPS is currently detected on X11 only (and even there it's known to be wrong on certain setups), it seems like a good idea to make this user-configurable.
* audio: add a mode to insert silence on severe A/V desyncwm42014-08-151-0/+5
| | | | | | This is probably a stupid idea, but it can't be denied that this actually allows playing video without larger desync, even if video is too slow.
* vo_opengl: optional support for using GLX_SGI_video_syncwm42014-08-151-0/+7
| | | | | | | | | I'm not sure about the merit, though it does print nice numbers if debug output is enabled. Basically, this tries to achieve similar results as the glFinish() business, but again it entirely depends on the drivers whether this does anything meaningful, or whether it's actively harmful.
* vo_opengl: if glfinish is used, also call it after swapppingwm42014-08-151-1/+3
| | | | | | It seems that at least on nvidia systems with composting disabled, we can get it to block deterministically on the actual vsync event, which should improve framedropping.
* video: add VO framedropping modewm42014-08-152-10/+39
| | | | | | | | | | | | | | | | | | | | | | | | This mostly uses the same idea as with vo_vdpau.c, but much simplified. On X11, it tries to get the display framerate with XF86VM, and limits the frequency of new video frames against it. Note that this is an old extension, and is confirmed not to work correctly with multi-monitor setups. But we're using it because it was already around (it is also used by vo_vdpau). This attempts to predict the next vsync event by using the time of the last frame and the display FPS. Even if that goes completely wrong, the results are still relatively good. On other systems, or if the X11 code doesn't return a display FPS, a framerate of 1000 is assumed. This is infinite for all practical purposes, and means that only frames which are definitely too late are dropped. This probably has worse results, but is still useful. "--framedrop=yes" is basically replaced with "--framedrop=decoder". The old framedropping mode is kept around, and should perhaps be improved. Dropping on the decoder level is still useful if decoding itself is too slow.
* sub: add option to workaround broken mkv fileswm42014-08-141-0/+7
| | | | See additions to options.rst.
* af_lavcac3enc: lower minimum channel number to 3wm42014-08-121-1/+1
| | | | It seems only stereo PCM should be passed through.
* docs: cocoa example uses wakeup callback APIFRAU KOUJIRO2014-08-121-22/+54
| | | | Also, imitate the qt example somewhat.
* docs: simple cocoa API usage exampleFRAU KOUJIRO2014-08-121-0/+85
|
* af_lavcac3enc: change default bitrate to 640wm42014-08-121-1/+3
| | | | | | | No reason to use less. Since the name "default" is misleading now, replace it with "auto" (still recognize the old name).
* video: move display and timing to a separate threadwm42014-08-121-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The VO is run inside its own thread. It also does most of video timing. The playloop hands the image data and a realtime timestamp to the VO, and the VO does the rest. In particular, this allows the playloop to do other things, instead of blocking for video redraw. But if anything accesses the VO during video timing, it will block. This also fixes vo_sdl.c event handling; but that is only a side-effect, since reimplementing the broken way would require more effort. Also drop --softsleep. In theory, this option helps if the kernel's sleeping mechanism is too inaccurate for video timing. In practice, I haven't ever encountered a situation where it helps, and it just burns CPU cycles. On the other hand it's probably actively harmful, because it prevents the libavcodec decoder threads from doing real work. Side note: Originally, I intended that multiple frames can be queued to the VO. But this is not done, due to problems with OSD and other certain features. OSD in particular is simply designed in a way that it can be neither timed nor copied, so you do have to render it into the video frame before you can draw the next frame. (Subtitles have no such restriction. sd_lavc was even updated to fix this.) It seems the right solution to queuing multiple VO frames is rendering on VO-backed framebuffers, like vo_vdpau.c does. This requires VO driver support, and is out of scope of this commit. As consequence, the VO has a queue size of 1. The existing video queue is just needed to compute frame duration, and will be moved out in the next commit.
* DOCS: mark the recent release in client-api-changes.rstwm42014-08-122-0/+3
| | | | | | | Also add instructions to release-policy.md, since this can be easily forgotten. CC: @mpv-player/stable
* input.conf: make explanatory text more readablewm42014-08-111-0/+1
| | | | | Or at leats this is the intention. It's a bit hard to tell which information is needed, and which not.
* manpage: update keybindingswm42014-08-111-1/+1
|
* Move status-line.luawm42014-08-111-69/+0
| | | | | Looks like TOOLS/lua/ is now established as dumping ground for random Lua scripts, so DOCS/lua_examples/ is not needed anymore.
* video: remove "hard" framedrop modewm42014-08-091-4/+8
| | | | | | | | | Completely useless, and could accidentally be enabled by cycling framedrop modes. Just get rid of it. But still allow triggering the old code with --vd-lavc-framedrop, in case someone asks for it. If nobody does, this new option will be removed eventually.
* manpage: update key bindingswm42014-08-081-36/+6
|
* manpage: add sections and order by usageAlexander Preisinger2014-08-081-1677/+1810
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Split the options into the following sections: * Playback Control * Program Behaviour * Video * Audio * Subtitles * Window * Disc Devices * Equalizer * Demuxer * Input * OSD * Screenshot * Software Scaler * Terminal * TV * Cache * Network * DVB * PVR * Miscellaneous Most options are sorted by usefullness and how often they're used or how important they are. This makes finding the right options easier and adds some sort of structure.
* command: add a "seeking" propertywm42014-08-081-0/+6
| | | | | | The client API exports this state via events already, but maybe it's better to explicitly provide this property in order to facilitate use on OSD and similar cases.
* client API: qtexample: don't pass deallocated strings to mpvwm42014-08-071-1/+2
| | | | | The temporary QByteArray is deallocated already at the end of the statement in C++, instead of the end of the scope (like in C).
* client API: add and use the MPV_MAKE_VERSION macrowm42014-08-051-0/+1
| | | | | | | This is probably nicer. The actual version number doesn't change (other than the minor being incremented). The "| 0UL" is to make the type unsigned long int, like it was before.
* player: some further playloop cleanupswm42014-08-032-6/+9
| | | | | | | | | | | | | Handle --term-playing-msg at a better place. Move MPV_EVENT_TICK hack into a separate function. Also add some words to the client API that you shouldn't use it. (But better leave breaking it for later.) Handle --frames and frame_step differently. Remove the mess from the playloop, and do it after frame display. Give up on the weird semantics for audio-only mode (they didn't make sense anyway), and adjust the manpage accordingly.
* manpage: be more explicit where input.conf is locatedwm42014-08-022-1/+6
|
* manpage: explain how to replace --slave-brokenwm42014-08-021-0/+10
|
* command: add a property that returns a list of all propertieswm42014-08-021-0/+2
| | | | Also remove the undocumented Lua mp.property_list() function.
* manpage: remove duplicated misplaced description of a commandwm42014-08-021-2/+0
|
* Remove the last remains of slave modewm42014-08-012-32/+10
| | | | | | | | | | | Almost nothing was left of it. The only thing this commit actually removes is support for reading input commands from stdin. But you can emulate this via: --input-file=/dev/stdin --input-terminal=no However, this won't work on Windows. Just use a named pipe.
* command: add cache-idle propertywm42014-07-311-2/+6
|
* video/filter: add vf_bufferwm42014-07-301-0/+6
| | | | Mostly useful for debugging.